是否有与 simplejson 类似的库,可以快速序列化与 XML 之间的数据。
e.g. json.loads('{vol:'III', title:'Magical Unicorn'}')
e.g. json.dumps([1,2,3,4,5])
有任何想法吗?
是否有与 simplejson 类似的库,可以快速序列化与 XML 之间的数据。
e.g. json.loads('{vol:'III', title:'Magical Unicorn'}')
e.g. json.dumps([1,2,3,4,5])
有任何想法吗?
您不会找到任何与 json 一样一致的 xml,因为 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'},)
>>>
您可以查看他们在 Django 中是如何做到的:xml_serializer.py并根据您的需要进行调整。
我不知道一个。除非xmlrpc很重要...如果您正在考虑自行开发:与大多数其他 XML 库相比,使用ElementTree做任何事情都是一种乐趣。
但是,由于您最终可能会得到一个非标准化的表示,因此您需要控制双方,对吗?那么为什么不直接选择json、pickle或已经存在的东西呢?
如果您想使用 xmlrpclib 模块:
xmlrpclib.dumps(data)
Forest 提到了 xmlrpclib 中的限制,这是一个很好的观点。我自己见过的一些:整数不能超过 2^31-1,否则图书馆会抱怨。“无”值通常不好,但您可以绕过它。可能还有其他限制。
除此之外,xmlrpc 协议非常冗长。如果您需要担心发送了多少数据,这不是最好的。但是没有任何 XML 版本会非常有效。
xml 不像 json 那样直接,因为 xml 和 python 的数据类型之间没有“类型映射”。哎呀,XML 数据可以是任何东西,就像在相应的 XSL 中映射的那样。
至于你最关心的API,我推荐Element Tree
有关使用 Element Tree 解析 XML 的优秀教程,请参阅Mark Pilgrim 的 Dive into Python3
lxml呢?