如何将Python对象转换为XML?
我想把一个Python对象转换成XML数据。我试过用lxml这个库,但最后还是不得不写一些自定义代码来保存我的对象为XML,这样的结果并不理想。
我想找一个更像pyxser的工具。不过,pyxser生成的XML代码和我需要的格式不太一样。
比如,我有一个自己的类叫Person:
Class Person:
name = ""
age = 0
ids = []
我想把它转换成看起来像这样的XML代码:
<Person>
<name>Mike</name>
<age> 25 </age>
<ids>
<id>1234</id>
<id>333333</id>
<id>999494</id>
</ids>
</Person>
我在lxml.objectify里没有找到可以直接把对象转换成XML代码的方法。
2 个回答
-5
迈克,
你可以选择把对象渲染成XML格式:
class Person:
...
def toXml( self):
print '<Person>'
print '\t<name>...</name>
...
print '</Person>'
或者你可以使用XSLT来转换Gnosis或pyxser的输出。
2
“最好”这个说法其实是比较主观的,没办法在不知道你具体需求的情况下说出什么是最好的。不过,Gnosis之前被推荐用来把Python对象转成XML格式,所以你可以先试试这个。
在Gnosis的主页上,介绍了它的一些功能:
Gnosis Utils包含了几个用于处理XML的Python模块,还有其他一些实用的工具:
- xml.pickle(可以把对象转成XML,或者从XML转回对象)
- 与标准的pickle模块兼容的API
- xml.objectify(可以把任意的XML文档转成Python对象)
- xml.validity(通过DTD或Schema来确保XML的有效性)
- xml.indexer(支持全文索引和搜索)
- 还有很多其他功能……
另一个选择是lxml.objectify。