如何在xml树中找到孩子?

时间:2014-03-16 19:15:37

标签: python xml python-3.x

我刚刚意识到python的xml模块中的findall方法只搜索调用它的元素的直接子节点,而不会查看所有子元素。

如果我想在xml树中找到<arbitrary>标签的所有实例,嵌套到任何深度怎么办?我该怎么做?

1 个答案:

答案 0 :(得分:1)

您可以使用iterparse

import xml.etree.ElementTree as ET

for event, elem in ET.iterparse(filename, events=('end', )):
    if elem.tag == 'arbitrary':
        ...

如果您安装了lxml,则可以使用iterparse(请注意tag参数):

import lxml.etree as ET

for event, elem in ET.iterparse(filename, events=('end', ), tag='arbitrary'):
    ...

或使用XPath:

import lxml.etree as ET
tree = ET.parse(filename)
for elem in tree.xpath('//arbitrary'):
    ...