Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xml Django序列化程序能否序列化非Django类/对象_Xml_Django_Serialization_Xmlserializer_Django Serializer - Fatal编程技术网

Xml Django序列化程序能否序列化非Django类/对象

Xml Django序列化程序能否序列化非Django类/对象,xml,django,serialization,xmlserializer,django-serializer,Xml,Django,Serialization,Xmlserializer,Django Serializer,我想用Django serializes用XML序列化一个带有自定义标记的对象,并且从它只使用对象(Django对象)这一事实开始。。是否可以传递自定义的非Django对象,其中我只指定需要传递的标记 这是可能的,还是我问错了问题 提前谢谢 --编辑-- 作为我所认为的输入的一个例子: class market(object): def __init__(self,): self.grocery = self.GROCERY self.electroni

我想用Django serializes用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,并在网页中作为响应返回,如下所示(作为示例):

这是预期的产出:

<?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 serializer能以一种简单省时的方式完成此操作(或类似操作)吗?

我想我明白了,如果您实例化了类,我不确定您是否要转换类或对象:

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))
导入检查
从xml.etree.ElementTree导入元素到字符串
定义对象到xml(对象):
元素=元素(对象类名称)
对于inspect.getmembers(obj,inspect.ismethod)中的name和method:
如果对象中的名称。\uuuu dict\uuuuu.keys():
子元素=元素(名称)
方法()
对于方法中的gname.\u代码\u.co\u名称:
gchild=元素(gname)
gchild.text=str(对象名称)
child.append(gchild)
元素附加(子元素)
返回元素
市场=市场()
将'%s!'打印到字符串(对象到xml(市场))

你能举一个输入对象和预期结果的例子吗?嗨,我的问题中添加了一个编辑,请看一下似乎是个好主意。。如果您不介意的话,我将基于您的代码在github上为此启动一个项目:)。。对不起,我迟到了。。我有点忙。
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))