我想使用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序列化程序能否以节省时间的方式执行此操作(或类似操作)?
答案 0 :(得分: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))