如何在python中找到元素树中的元素数量?

mar*_*riz 15 python xml lxml elementtree

我是元素树的新手,在这里我试图找到元素树中的元素数量.

from lxml import etree 
root = etree.parse(open("file.xml",'r'))
Run Code Online (Sandbox Code Playgroud)

有没有办法找到root中元素的总数?

har*_*r07 16

找到所有目标元素(有一些方法可以做到这一点),然后使用内置函数len()来获取计数.例如,如果您只想计算root的直接子元素:

from lxml import etree 
doc = etree.parse("file.xml")
root = doc.getroot()

result = len(root.getchildren())
Run Code Online (Sandbox Code Playgroud)

或者,如果您要计算根元素中的所有元素:

result = len(root.xpath(".//*"))
Run Code Online (Sandbox Code Playgroud)

  • 不幸的是,在python 2.7中不推荐使用`getchildren`。 (2认同)
  • `root.getchildren()` -> `list(root)` 根据文档,你可以简单地做 `len(root)` (2认同)

Pad*_*ham 9

您不必将所有节点都加载到列表中,可以使用sum和延迟迭代:

from lxml import etree 
root = etree.parse(open("file.xml",'r'))
count = sum(1 for _ in root.iter("*"))
Run Code Online (Sandbox Code Playgroud)


Tho*_*asW 5

获取子元素数量的另一种方法:

len(list(root))
Run Code Online (Sandbox Code Playgroud)