有没有办法使用Python计算xml文件中某个名称的元素数量?

时间:2016-05-17 02:20:02

标签: python xml xpath xml-parsing

我在Windows 64位计算机上使用Python 3.4。

我目前有一个xml文件,它有多个层次结构。名称"段落"中有许多元素。在xml树中。但他们可能处于不同的等级制度。

有没有办法以简单的方式计算这些元素的数量?遍历整棵树似乎太费时了。

3 个答案:

答案 0 :(得分:4)

如果您使用lxml.etree,那么您将拥有完整的XPath支持并可以使用count()

import lxml.etree as ET

tree = ET.parse(xml)
paragraphs = tree.xpath('count(//p)')
print(paragraphs)

xml.etree.ElementTree中,您必须通过findall()len()在Python中执行此操作,因为limited XPath support

import xml.etree.ElementTree as ET

tree = ET.parse(xml)
paragraphs = tree.findall('//p')
print(len(paragraphs)) 

答案 1 :(得分:2)

读取xml文件并获取xmlString中的内容。如果你需要的只是“段落”这个词的出现次数,你可以这样做 -

xmlString.count("<paragraph>")

这对xml文件的外观有几个假设,可能无法在所有情况下都有效。

答案 2 :(得分:1)

我现在找到了一个简单的方法来使用xml.dom.minidom完成工作:

import xml.dom.mimidom as DM
tree = DM.parse(xml_file)
paragraphs = tree.getElementByTagName('paragraph')
print(len(paragraphs))