用于从XML创建Python对象表示的模块
我在找一个简单好用的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的功能。