与simplejson/json类似的XML库?- Python

5 投票
5 回答
3153 浏览
提问于 2025-04-15 23:41

有没有类似于simplejson的库,可以快速将数据转换成XML格式,或者从XML格式转换回来呢?

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

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

有什么好主意吗?

5 个回答

2

我不知道有没有这样的东西。除非你觉得 xmlrpc 算一个... 如果你打算自己做的话,使用 ElementTree 来处理 XML 会比大多数其他的 XML 库要简单得多。

不过,因为你可能最终得到的结果不会是标准格式,所以你需要控制双方的内容,对吧?那为什么不直接选择 jsonpickle 或者其他已经存在的东西呢?

如果你想使用 xmlrpclib 模块的话:

xmlrpclib.dumps(data)

Forest 提到 xmlrpclib 的一些限制,这个说得很对。我自己也遇到过一些:整数不能超过 2^31-1,否则库会报错。“None” 值通常也不太好,但你可以找到解决办法。可能还有其他的限制。

除此之外,xmlrpc 协议的内容比较冗长。如果你需要担心发送的数据量,这个协议就不是最好的选择。不过,任何 XML 版本都不会特别高效。

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'},)
>>> 
3

你可以看看他们在Django里是怎么做的:xml_serializer.py,然后根据你的需求进行调整。

撰写回答