使用Python按顺序解析XML

时间:2013-01-27 20:48:41

标签: python xml xml-parsing

我正在尝试解析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文档,但我不确定这是否提供了我要查找的功能。我将如何处理文本节点?

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

谢谢!

1 个答案:

答案 0 :(得分: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并编写处理程序来打开和关闭标记。它涉及的更多。