如何将Python对象转换为XML?

7 投票
2 回答
12174 浏览
提问于 2025-04-16 01:50

我想把一个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

撰写回答