用于从XML创建Python对象表示的模块

8 投票
7 回答
8546 浏览
提问于 2025-04-11 19:12

我在找一个简单好用的Python原生模块,想把XML文件转换成Python对象。

我通过谷歌找到了几个模块(其中一个是 XMLObject),但不想一个个试。

你觉得有什么好的方法来做到这一点呢?

补充说明:我忘了提,我想读取的XML文件不是我自己生成的。它是一个我无法控制结构的现有XML文件。

7 个回答

3

我听说最简单的方法是用ElementTree,不过我很少接触XML,所以没什么实际经验可以分享。

5

我也推荐使用xml.etree.ElementTree,主要是因为它现在已经包含在标准库里了。还有一个更快的版本,叫做xml.etree.cElementTree。

如果你真的需要更高的性能,我建议使用lxml。

http://www.ibm.com/developerworks//xml/library/x-hiperfparse/

12

你提到想要一个对象的表示方式,我理解为节点会变成对象,而节点的属性和子节点会作为这个对象的属性来表示(可能还会按照某种模式来组织)。我认为这就是XMLObject的作用。

我知道有一些相关的工具包。4Suite里有一些工具可以做到这一点,而我相信Amara特别实现了这个功能(它是基于4Suite构建的)。你还可以使用lxml.objectify,这个工具受到了Amara和gnosis.xml.objectify的启发。

当然,还有第三种选择,就是在有了XML的具体表示(使用ElementTree或lxml)后,你可以围绕它构建自己的自定义模型。lxml.html就是一个例子,它在lxml的基础接口上扩展了一些特定于HTML的功能。

撰写回答