是否有类似于simplejson的库,它可以实现与XML的快速序列化数据。
e.g. json.loads('{vol:'III', title:'Magical Unicorn'}')
e.g. json.dumps([1,2,3,4,5])
有什么想法吗?
答案 0 :(得分:3)
你不会为xml找到与json一致的东西,因为xml不知道数据类型。这取决于您遵循约定或强制遵守xml架构文件。
话虽如此,如果您愿意接受XML-RPC数据结构映射和一些限制,请查看Python标准库中的xmlrpclib包:
http://docs.python.org/library/xmlrpclib.html#convenience-functions
>>> import xmlrpclib
>>> s = xmlrpclib.dumps( ({'vol':'III', 'title':'Magical Unicorn'},))
>>> print s
<params>
<param>
<value><struct>
<member>
<name>vol</name>
<value><string>III</string></value>
</member>
<member>
<name>title</name>
<value><string>Magical Unicorn</string></value>
</member>
</struct></value>
</param>
</params>
>>> xmlrpclib.loads(s)[0]
({'vol': 'III', 'title': 'Magical Unicorn'},)
>>>
答案 1 :(得分:3)
你可以看看他们是如何在Django中完成的:xml_serializer.py并根据你的需要定制它。
答案 2 :(得分:2)
我不知道一个。除非xmlrpc计数...... 如果您正在考虑自己编写:与大多数其他XML库相比,使用ElementTree执行任何操作都是一种乐趣。
但是,既然你可能最终会得到一个非标准化的代表,你需要控制双方,对吗? 那么为什么不选择json,pickle或已存在的东西?
如果您想使用xmlrpclib模块:
xmlrpclib.dumps(data)
Forest提到xmlrpclib中的限制,这是一个很好的观点。有些我自己看过:整数不能超过2 ^ 31-1或者图书馆会抱怨。 “无”值通常不合适,但你可以解决这个问题。 可能还有其他限制。
除此之外,xmlrpc协议非常详细。如果您需要担心发送了多少数据,那么这不是最好的数据。但是没有XML版本会非常有效。
答案 3 :(得分:2)
使用xml并不像json那样直接,因为xml和python的数据类型之间没有“类型映射”。 Heck XML数据可以是任何东西,映射在相应的XSL中。
至于你所关心的API,我推荐Element Tree
有关使用Element Tree解析XML的优秀教程,我建议你Mark Pilgrim's Dive into Python3
答案 4 :(得分:1)
lxml怎么样?