12

我想使用 python 解析一个简单的小型 XML 文件,但是对 pyXML 的工作似乎已经停止。如果可能的话,我想使用 python 2.6。谁能推荐一个适用于 2.6 的 XML 解析器?

谢谢

4

5 回答 5

19

如果它又小又简单,那么只需使用标准库

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

这将返回一个实现标准文档对象模型 API的 DOM 树

如果你以后需要做复杂的事情,比如模式验证或 XPath 查询,那么我推荐第三方lxml 模块,它是流行的 libxml2 C 库的包装器。

于 2009-09-03T14:26:05.153 回答
6

对于我的大部分任务,我使用了官方页面上的 Minidom Lightweight 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>')
于 2009-09-03T19:51:15.700 回答
5

这里也是一个很好的例子,说明如何使用 minidom 以及解释。

于 2009-09-03T14:31:02.907 回答
3

lxml会满足您的需求吗?它是我用来进行 xml 解析的第一个工具。

于 2009-09-03T14:29:04.343 回答
1

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

您可以将 XML 用于诸如文字处理器文档之类的东西,在这种情况下,您会得到一堆复杂的东西,其中到处都嵌入了 XML 标记;在这种情况下,我的图书馆不会很好。

但是,如果您将 XML 用于配置文件之类的东西,我的库会相当方便。您定义描述所需 XML 结构的类,一旦完成这些类,就有一种方法可以在 XML 中啜饮并解析它。实际的解析是由 xml.dom.minidom 完成的,但是我的库会提取数据并将其放入类中。

最好的部分:您可以声明一个“集合”类型,它将是一个 Python 列表,其中包含零个或多个其他 XML 元素。这对于 Atom 或 RSS 提要(这是我设计库的最初原因)之类的东西非常有用。

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

如果您有任何问题,我很乐意回答。

于 2009-09-03T19:39:30.643 回答