5

是否有与 simplejson 类似的库,可以快速序列化与 XML 之间的数据。

e.g. json.loads('{vol:'III', title:'Magical Unicorn'}')

e.g. json.dumps([1,2,3,4,5])

有任何想法吗?

4

5 回答 5

3

您不会找到任何与 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'},)
>>> 
于 2010-06-08T11:08:01.813 回答
3

您可以查看他们在 Django 中是如何做到的:xml_serializer.py并根据您的需要进行调整。

于 2010-06-08T13:48:50.517 回答
2

我不知道一个。除非xmlrpc很重要...如果您正在考虑自行开发:与大多数其他 XML 库相比,使用ElementTree做任何事情都是一种乐趣。

但是,由于您最终可能会得到一个非标准化的表示,因此您需要控制双方,对吗?那么为什么不直接选择jsonpickle或已经存在的东西呢?

如果您想使用 xmlrpclib 模块:

xmlrpclib.dumps(data)

Forest 提到了 xmlrpclib 中的限制,这是一个很好的观点。我自己见过的一些:整数不能超过 2^31-1,否则图书馆会抱怨。“无”值通常不好,但您可以绕过它。可能还有其他限制。

除此之外,xmlrpc 协议非常冗长。如果您需要担心发送了多少数据,这不是最好的。但是没有任何 XML 版本会非常有效。

于 2010-06-08T11:06:25.053 回答
2

xml 不像 json 那样直接,因为 xml 和 python 的数据类型之间没有“类型映射”。哎呀,XML 数据可以是任何东西,就像在相应的 XSL 中映射的那样。

至于你最关心的API,我推荐Element Tree

有关使用 Element Tree 解析 XML 的优秀教程,请参阅Mark Pilgrim 的 Dive into Python3

于 2010-06-08T12:25:46.670 回答
1

lxml呢?

于 2010-06-08T11:06:02.293 回答