我刚刚意识到python的xml模块中的findall
方法只搜索调用它的元素的直接子节点,而不会查看所有子元素。
如果我想在xml树中找到<arbitrary>
标签的所有实例,嵌套到任何深度怎么办?我该怎么做?
答案 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'):
...