Python 中的 XML 解析

发布于 2024-08-03 23:14:19 字数 1536 浏览 4 评论 0原文

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

﹏雨一样淡蓝的深情 2024-08-10 23:14:19

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

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

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

如果您以后需要执行复杂的操作,例如架构验证或 XPath 查询,那么我推荐第三方 lxml 模块,它是流行的 libxml2 C 的包装器图书馆。

If it's small and simple then just use the standard library:

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

This will return a DOM tree implementing the standard Document Object Model API

If you later need to do complex things like schema validation or XPath querying then I recommend the third-party lxml module, which is a wrapper around the popular libxml2 C library.

我纯我任性 2024-08-10 23:14:19

对于我的大部分任务,我使用了 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>')

For most of my tasks I have used the Minidom Lightweight DOM implementation, from the official page:

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>')
浴红衣 2024-08-10 23:14:19

这里也是一个关于如何使用 minidom 的非常好的示例以及解释。

Here is also a very good example on how to use minidom along with explanations.

不必你懂 2024-08-10 23:14:19

lxml 能满足您的需求吗?这是我使用的第一个 xml 解析工具。

Would lxml suit your needs? Its the first tool I turn to for xml parsing.

暗喜 2024-08-10 23:14:19

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

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

但如果您使用 XML 来处理配置文件之类的内容,我的库就相当方便。您可以定义描述所需 XML 结构的类,完成这些类后,就可以使用一种方法来读取 XML 并解析它。实际的解析是由 xml.dom.minidom 完成的,但随后我的库提取数据并将其放入类中。

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

网址如下:http://home.avvanta.com/~steveha/xe.html

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

A few years ago, I wrote a library for working with structured XML. It makes XML simpler by making some limiting assumptions.

You could use XML for something like a word processor document, in which case you have a complicated soup of stuff with XML tags embedded all over the place; in which case my library would not be good.

But if you are using XML for something like a config file, my library is rather convenient. You define classes that describe the structure of the XML you want, and once you have the classes done, there is a method to slurp in XML and parse it. The actual parsing is done by xml.dom.minidom, but then my library extracts the data and puts it in the classes.

The best part: you can declare a "Collection" type that will be a Python list with zero or more other XML elements inside it. This is great for things like Atom or RSS feeds (which was the original reason I designed the library).

Here's the URL: http://home.avvanta.com/~steveha/xe.html

I'd be happy to answer questions if you have any.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文