在Python中获取XML文档的一部分

0 投票
2 回答
1742 浏览
提问于 2025-04-16 10:43

我有一些XML文件,它们符合一个DTD(文档类型定义)。

<!ELEMENT root (node, notinteresting>
<!ELEMENT node (node*)>
<!ELEMENT notinteresting (#PCDATA)>

我想从这些文件中获取最顶层的节点(在XPath中表示为/root/node),以及它下面的所有内容,同时忽略掉notinteresting的部分。我该如何用几行Python代码来实现这个呢?速度和内存使用不是问题。我希望能得到一些可以用print输出的结果。

2 个回答

0

看看这两个模块:

1) minidom

2) ElementTree

这两个模块都能帮你完成你想做的事情,只是方式稍微有点不同。

3

你可以使用 elementtree API,根据你使用的版本,导入的方式可能会稍微不同。你需要的版本是大于等于 python 2.7。

from xml.etree.ElementTree import ElementTree
tree = ElementTree()
tree.parse("yourdoc.xml")
roottree = tree.getroot() 

这样你就可以做一些事情,比如。

for c in roottree.getchildren():

注意,如果你的输入只有一个字符串,除了使用 parse,你还可以用 fromstring()。

更新:如果 "root" 是 XML 文件的根元素,你也可以使用。

roottree = tree.find('root') 

撰写回答