<p>首先,请不要理会我的评论。结果表明,<code>xml.etree</code>比标准的<code>xml.etree.ElementTree</code>好得多,因为它处理名称空间。问题是要搜索<code>'//Constant'</code>,这意味着节点可以位于任何级别。但是,根元素不允许您这样做:</p>
<pre><code>>>> root.findall('//Constant')
SyntaxError: cannot use absolute path on element
</code></pre>
<p>但是,您可以在更高级别执行此操作:</p>
^{pr2}$
<h2>更新</h2>
<p>我将全文张贴在这里。因为我没有完整的XML文件,所以我做了一些事情来填补空白。在</p>
<pre><code>from lxml import etree as ET
from StringIO import StringIO
xml_text = """<?xml version='1.0' encoding='utf-8' ?>
<rdf:root xmlns:rdf='http://foo.bar.com/rdf'>
<rdf:RDF>
<rdf:Description>
DescriptionX
</rdf:Description>
</rdf:RDF>
<rdf:foo>
<MiriamAnnotation>
bar
</MiriamAnnotation>
<ListOfSubstrates>
<Substrate metabolite="Metabolite_5" stoichiometry="1"/>
</ListOfSubstrates>
<ListOfModifiers>
<Modifier metabolite="Metabolite_9" stoichiometry="1"/>
</ListOfModifiers>
<ListOfConstants>
<Constant key="Parameter_4344" name="Kcat" value="433.724"/>
<Constant key="Parameter_4343" name="km" value="479.617"/>
</ListOfConstants>
</rdf:foo>
</rdf:root>
"""
buffer = StringIO(xml_text)
tree = ET.parse(buffer)
for constant_node in tree.findall('//Constant'):
print constant_node.attrib['key']
</code></pre>