Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有没有一种方法可以使用Python计算xml文件中某个名称的元素数?_Python_Xml_Xpath_Xml Parsing - Fatal编程技术网

有没有一种方法可以使用Python计算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文件的外观做出一些假设,并且可能不会在所有情况下

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

我目前有一个xml文件,它有多个层次结构。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)
是什么意思?@joewong
count()
是一个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))