Python ElementTree findtext不';找不到叶节点
我使用ElementTree扫描从文本文件中提取的XML字符串Python ElementTree findtext不';找不到叶节点,python,xml,elementtree,Python,Xml,Elementtree,我使用ElementTree扫描从文本文件中提取的XML字符串 <root> <branch_a> <leaf>foo</leaf> </branch_a> <branch_b> <another_leaf>bar</another_leaf> </branch_b> </root> 但当我穿过这棵树时,一切都很
<root>
<branch_a>
<leaf>foo</leaf>
</branch_a>
<branch_b>
<another_leaf>bar</another_leaf>
</branch_b>
</root>
但当我穿过这棵树时,一切都很好:
>>> elem_tree.findtext('branch_a/leaf')
'foo'
>>> branch = elem_tree.find('branch_a')
>>> branch.findtext('leaf')
'foo'
有没有办法让ElementTree帮我扫描整棵树?我的分支名称是动态的,我正在寻找的叶子可以生活在任何分支下
我可以用minidom实现这一点,但也遇到了其他限制。下面是我在那里做的,供参考(错误检查)
findtext
使用ElementTree样式的path语句,因此您只扫描直接子级。这将扫描整个树(请参阅):
我是这样做的:
leaf_text = elem_tree.findall('.//leaf')
for x in range(0, len(leaf_text)):
print leaf_text[x].text
这正是我所缺少的。谢谢
>>> xml_doc = xml.dom.minidom.parseString(xml_string)
>>> leaf_node = xml_doc.getElementsByTagName('leaf')
>>> leaf_node[0].firstChild.nodeValue
'foo'
leaf_text = elem_tree.findtext('.//leaf')
leaf_text = elem_tree.findall('.//leaf')
for x in range(0, len(leaf_text)):
print leaf_text[x].text