0

我正在尝试解析 XML 文档。该文档具有嵌入的 HTML 格式,例如

<p>This is a paragraph
 <em>with some <b>extra</b> formatting</em>
 scattered throughout.
</p>

到目前为止我已经使用

import xml.etree.cElementTree as xmlTree

处理 XML 文档,但我不确定这是否提供了我正在寻找的功能。我将如何处理这里的文本节点?

另外,有没有办法在文档中找到结束标签?

谢谢!

4

1 回答 1

0

如果您的 XML 文档适合内存,您应该使用Beautiful Soup,它可以让您更清晰地访问文档。您将能够选择一个节点并自动与其子节点交互;每个节点都有一个.next命令,它将遍历文本直到下一个标签。

所以:

>>> b = BeautifulSoup.BeautifulStoneSoup("<p>This is a paragraph <em>with some <b>extra</b> formatting</em> scattered throughout.</p>")

>>> b.find('p')
<p>This is a paragraph <em>with some <b>extra</b> formatting</em> scattered throughout.</p>

>>> b.find('p').next
u'This is a paragraph '

>>> b.find('p').next.next
<em>with some <b>extra</b> formatting</em>

那或类似的东西应该可以解决您的问题。

如果它不适合内存,则需要对 SAX 解析器进行子类化,这需要更多的工作。为此,您使用from xml.parsers import expat并编写处理程序来打开和关闭标签。它涉及更多。

于 2013-01-27T21:13:02.973 回答