擅长:python、mysql、java
<p>好吧,这个问题有点老了,但我今天碰到了同样的问题。在</p>
<p>您需要为代提供“dc”的名称空间,“pico”也一样。你必须让lxml知道这个名称空间。可以使用创建根元素时提供的命名空间映射来完成此操作:</p>
<pre><code>from lxml import etree
xsi="http://www.w3.org/2001/XMLSchema-instance"
schemaLocation="http://purl.org/pico/1.0/ http://www.culturaitalia.it/pico/schemas/1.0/pico.xsd"
pico = "http://purl.org/pico/1.0/"
dc = "http://purl.org/dc/elements/1.1/"
ns = {"xsi": xsi, "dc": dc, "pico": schemalocation}
root=etree.Element("{" + pico + "}record", attrib={"{" + xsi + "}schemaLocation" : schemaLocation}, nsmap=ns)
etree.SubElement(root, "{" + dc + "}" + "identifier").text = "work_3117"
print etree.tostring(root, pretty_print=True)
</code></pre>
<p>结果是:</p>
^{pr2}$
<p>有关详细信息,请参见:<a href="http://lxml.de/tutorial.html#namespaces" rel="nofollow">http://lxml.de/tutorial.html#namespaces</a></p>