0

我想使用 Django 序列化使用自定义标签对对象进行 XML 序列化,并且从它仅使用对象(Django 对象)的事实开始......是否可以将自定义的非 Django 对象传递给它,我只指定需要传递的标签。

这可能吗,或者我问错了问题。

提前致谢!

- 编辑 -

作为我认为的输入的一个例子:

class market(object):

    def __init__(self,):
        self.grocery = self.GROCERY
        self.electronics = self.ELECTRONICS

    def GROCERY(self,):

        self.item1 = "banana"
        self.item2 = "tomato"
        self.item3 = "apple"

    def ELECTRONICS(self,):

        self.item1 = "laptop"
        self.item2 = "camera"
        self.item3 = "mobile"

现在我想将该对象序列化为 xml 并将其作为网页中的响应返回,如下所示(例如):

from django.serializers import serialize

data = serialize("xml", market)  

这是预期的输出:

<?xml version="1.0" encoding="utf-8"?>
<market>
  <grocery>
    <item1>banana</item1>
    <item2>toamato</item2>
    <item3>apple</item3>
  </grocery>

  <electronics>
    <item1>laptop</item1>
    <item2>camera</item2>
    <item3>mobile</item3>
  </electronics>
</market>

django 序列化程序可以以一种简单的节省时间的方式执行此操作(或类似操作)吗?

4

1 回答 1

1

我想我明白了,只要你实例化类,我不确定你想转换类或对象:

import inspect
from xml.etree.ElementTree import Element, tostring


def obj_to_xml(obj):
    elem = Element(obj.__class__.__name__)
    for name, method in inspect.getmembers(obj, inspect.ismethod):
        if name in obj.__dict__.keys():
            child = Element(name)
            method()
            for gname in method.__code__.co_names: 
                gchild = Element(gname)
                gchild.text = str(obj.__dict__[gname])
                child.append(gchild)

            elem.append(child)

    return elem

market = Market()
print '<?xml version="1.0" encoding="utf-8"?>%s' % tostring(obj_to_xml(market))
于 2013-08-27T22:37:08.370 回答