2009-09-03 73 views
11

我想使用python解析一个简单的小型XML文件,但pyXML上的工作似乎已停止。如果可能,我想使用python 2.6。任何人都可以推荐一个可用于2.6的XML解析器吗?Python中的XML解析

感谢

回答

18

如果是小而简​​单,然后只需use the standard library

from xml.dom.minidom import parse 
doc = parse("filename.xml") 

这将返回一个DOM树实现标准Document Object Model API

如果以后需要做这样的模式验证复杂的事情或XPath查询,然后我推荐第三方lxml module,它是流行的libxml2 C库的封装。

+2

谢谢!太容易了。 – Alex

3

请问lxml是否符合您的需求?它是我转向进行xml解析的第一个工具。

+3

另外,Python 2.5+已经集成了etree。它实现了什么相当于lxml的子集。当我需要etree没有完全覆盖的任何东西时,我使用etree进行简单的XML处理和lxml。 –

5

Here也是关于如何使用minidom以及解释的一个很好的例子。

+0

链接似乎重定向到没有www前面的主页。这是一个工作链接:http://www.diveintopython.net/xml_processing/index.html – Husky

+0

修复了链接。谢谢! –

1

几年前,我写了一个库,用于处理结构化的 XML。它通过做出一些限制性假设使得XML更简单。

您可以将XML用于类似于文字处理器文档的东西,在这种情况下,您将XML标签嵌入到整个场所中,在这种情况下,我的图书馆将不会好。

但是,如果您使用的是类似于配置文件的XML,我的库相当方便。你定义了描述你想要的XML结构的类,一旦你完成了这些类,就有了一种方法来处理XML并解析它。实际的解析由xml.dom.minidom完成,但是我的库提取数据并将其放入类中。

最好的部分是:你可以声明一个“Collection”类型,它将成为一个Python列表,其中包含零个或多个其他XML元素。这对Atom或RSS feeds这些东西来说非常棒(这是我设计库的最初原因)。

这里的网址:http://home.avvanta.com/~steveha/xe.html

我会很高兴,如果您有任何回答问题。

6

对于大多数我的任务我已经使用了轻量级minidom命名DOM实现,从官方页面:

from xml.dom.minidom import parse, parseString 

dom1 = parse('c:\\temp\\mydata.xml') # parse an XML file by name 

datasource = open('c:\\temp\\mydata.xml') 
dom2 = parse(datasource) # parse an open file 

dom3 = parseString('<myxml>Some data<empty/> some more data</myxml>')