擅长:python、mysql、java
<p>以下是如何获取要查找的值:</p>
<pre><code>from lxml import etree
parsed = etree.parse('ct.cps')
for a in parsed.findall("//{http://www.copasi.org/static/schema}Constant"):
print a.attrib["key"]
</code></pre>
<p>输出:</p>
^{pr2}$
<p>这里重要的是,XML文件中的<code>COPASI</code>根元素(Dropbox URL中的实际根元素)声明了一个默认名称空间(<code>http://www.copasi.org/static/schema</code>)。这意味着元素及其所有后代,包括<code>Constant</code>,都属于该名称空间。在</p>
<p>因此,您需要查找<code>Constant</code>元素,而不是<code>Constant</code>元素。在</p>
<p>见<a href="http://lxml.de/tutorial.html#namespaces" rel="nofollow">http://lxml.de/tutorial.html#namespaces</a>。在</p>
<hr/>
<p>下面是如何使用XPath而不是<code>findall</code>:</p>
<pre><code>from lxml import etree
NSMAP = {"c": "http://www.copasi.org/static/schema"}
parsed = etree.parse('ct.cps')
for a in parsed.xpath("//c:Constant", namespaces=NSMAP):
print a.attrib["key"]
</code></pre>
<p>见<a href="http://lxml.de/xpathxslt.html#namespaces-and-prefixes" rel="nofollow">http://lxml.de/xpathxslt.html#namespaces-and-prefixes</a>。在</p>