我使用ElementTree扫描从文本文件中拉出的XML字符串。ElementTree findtext找不到叶节点
<root>
<branch_a>
<leaf>foo</leaf>
</branch_a>
<branch_b>
<another_leaf>bar</another_leaf>
</branch_b>
</root>
当我分析它,并试图找到叶节点,我没有得到任何结果:
>>> elem_tree = xml.etree.ElementTree.fromstring(xml_string)
>>> leaf_text = elem_tree.findtext('leaf')
>>> leaf_text is None
True
但是,当我遍历树,一切正常:
>>> elem_tree.findtext('branch_a/leaf')
'foo'
>>> branch = elem_tree.find('branch_a')
>>> branch.findtext('leaf')
'foo'
有没有一种方法让ElementTree为我扫描整棵树?我的分支名称是动态的,我寻找的叶子可以生活在任何分支下。
我能用minidom做到这一点,但遇到了其他限制。这里是我在那里做的,供参考(剥去错误检查)。
>>> xml_doc = xml.dom.minidom.parseString(xml_string)
>>> leaf_node = xml_doc.getElementsByTagName('leaf')
>>> leaf_node[0].firstChild.nodeValue
'foo'
这是我错过了什么。谢谢! – 2014-10-17 17:28:42