首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在django-piston中更改xml元素名称?

如何在django-piston中更改xml元素名称?
EN

Stack Overflow用户
提问于 2011-12-02 13:59:47
回答 2查看 368关注 0票数 0

我是django-piston的新手,每当我将数据获取/发布到xml时,xml的元素总是和< resource >

代码语言:javascript
复制
<response>
<resource>
 <resource>4</resource>
 <resource>0</resource>
 <resource>2011-11-30</resource>
</resource>
<resource>
 <resource>4</resource>
 <resource>4</resource>
 <resource>2011-12-01</resource>
</resource>
<resource>
 <resource>4</resource>
 <resource>0</resource>
 <resource>2011-12-02</resource>
</resource>
<resource>
 <resource>4</resource>
 <resource>0</resource>
 <resource>2011-12-03</resource>
</resource>
<resource>
 <resource>4</resource>
 <resource>0</resource>
 <resource>2011-12-04</resource>
</resource>
</response>

有没有办法在handlers.py中对其进行更改?我只想将资源更改为product,如果可能的话,我还可以将id添加到xml元素中吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-12-02 15:53:36

您必须编写自己的XMLEmitter。这里有一个总是使用标记product而不是resource

使其智能化需要更多的工作,因为模型在Emitter.construct()方法中被序列化为字典,并且不可能正确地扩展。如果知道_to_xml()方法中的原始模型类,并根据类名为元素命名,那就更好了。

代码语言:javascript
复制
from piston.emitters import Emitter, XMLEmitter

class ProductXMLEmitter(XMLEmitter):
    def _to_xml(self, xml, data):
        if isinstance(data, (list, tuple)):
            for item in data:
                attrs = {}
                # if item contains id value, use it as an attribute instead
                if isinstance(item, dict):
                    attrs["id"] = unicode(item.pop("id"))
                xml.startElement("product", attrs)
                self._to_xml(xml, item)
                xml.endElement("product")
        else:
            super(BetterXMLEmitter, self)._to_xml(xml, data)

# replace default XMLEmitter with ours
Emitter.register('xml', ProductXMLEmitter, 'text/xml; charset=utf-8')

此外,你可能想看看PBS Education在https://github.com/pbs-education/django-piston上的django活塞叉。它允许您使用PistonViews以其他方式自定义输出。

票数 2
EN

Stack Overflow用户

发布于 2011-12-02 15:27:25

Elementtree会帮你的。您可以更改您想要更改的任何内容,读取文件,使用elementree对其进行解析,并更新值,然后再次将其放入文件(如果需要)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8352350

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档