有没有一种方法可以使用Python计算xml文件中某个名称的元素数?
我正在Windows 64位计算机上使用Python 3.4 我目前有一个xml文件,它有多个层次结构。xml树中有许多元素的名称为“段落”。但他们可能处于不同的层级有没有一种方法可以使用Python计算xml文件中某个名称的元素数?,python,xml,xpath,xml-parsing,Python,Xml,Xpath,Xml Parsing,我正在Windows 64位计算机上使用Python 3.4 我目前有一个xml文件,它有多个层次结构。xml树中有许多元素的名称为“段落”。但他们可能处于不同的层级 有没有办法简单地计算这些元素的数量?遍历整棵树似乎太耗时了。读取xml文件并获取xml字符串中的内容。如果您只需要单词“段落”的出现次数,您可以这样做- xmlString.count("<paragraph>") xmlString.count(“”) 这会对xml文件的外观做出一些假设,并且可能不会在所有情况下
有没有办法简单地计算这些元素的数量?遍历整棵树似乎太耗时了。读取xml文件并获取xml字符串中的内容。如果您只需要单词“段落”的出现次数,您可以这样做-
xmlString.count("<paragraph>")
xmlString.count(“”)
这会对xml文件的外观做出一些假设,并且可能不会在所有情况下都起作用。如果要使用,则您将拥有完整的XPath支持,并且可以使用:
在中,您必须通过和len()
在Python中执行此操作,因为:
现在,我找到了一种使用
xml.dom.minidom
完成这项工作的简单方法:
import xml.dom.mimidom as DM
tree = DM.parse(xml_file)
paragraphs = tree.getElementByTagName('paragraph')
print(len(paragraphs))
您需要遍历整个树两次:一次解析它,另一次计算每个段落标记。我相信
count
解决方案仍然会再次遍历树。如果将计数标记与解析树集成在一起,则可能只能遍历树一次,但这将是一项艰巨的工作。'count(//p)
是什么意思?@joewongcount()
是一个XPath函数(我添加了一个指向它的链接),//p
将递归查找文档中的所有p
元素。请记住,继续使用minidom解析xml一段时间,然后回来告诉我事情仍然很简单:)
import xml.etree.ElementTree as ET
tree = ET.parse(xml)
paragraphs = tree.findall('//p')
print(len(paragraphs))
import xml.dom.mimidom as DM
tree = DM.parse(xml_file)
paragraphs = tree.getElementByTagName('paragraph')
print(len(paragraphs))