Xml Django序列化程序能否序列化非Django类/对象
我想用Django serializes用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
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))