我在Windows 64位计算机上使用Python 3.4。
我目前有一个xml文件,它有多个层次结构。名称"段落"中有许多元素。在xml树中。但他们可能处于不同的等级制度。
有没有办法以简单的方式计算这些元素的数量?遍历整棵树似乎太费时了。
答案 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))