[英]python 2.7 XML lxml namespace prefix attribute issues
所以,我已经看到很多针对这个问题的答案,但是当它在XML文档的整个范围内发生变化时,它们没有明确说明如何调整名称空间前缀。
我有的:
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<ns0:Description xmlns:ns0="http://purl.org/NET/FOO">
</ns0:Description>
</rdf:RDF>
我想要的是:
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<rdf:Description rdf:about="http://purl.org/NET/FOO">
</rdf:Description>
</rdf:RDF>
为了澄清 ,我希望子SubElement的xmlns:rdfs
为rdf:about
。
曾经在Python2.5中工作的东西:
rdf_description = SubElement(
root,
'{http://www.w3.org/1999/02/22-rdf-syntax-ns#}Description',
{'rdf:about':vocab_namespace}
)
我在Python2.7中尝试过的:
register_namespace('rdf', 'rdf:about')
rdf_description = SubElement(
root,
'{http://www.w3.org/1999/02/22-rdf-syntax-ns#}Description',
nsmap={'rdf': rdf_url}
)
...... 好吧,我已经尝试过这么长时间排列的排列(这就是我现在拥有它的方式),但我似乎无法改变我需要它们的位数。
如果一个真正的lxml忍者可以从他们的快乐宫中走下来并指导这个新手,我会永远感激。
这对你有用吗?
RDFNS = "http://www.w3.org/1999/02/22-rdf-syntax-ns#"
root = lxml.etree.Element('{%s}RDF' % RDFNS, nsmap={'rdf': RDFNS})
rdf_description = lxml.etree.SubElement(
root,
'{%s}Description' % RDFNS,
{"{%s}about" % RDFNS: "http://purl.org/NET/FOO"})
检查输出:
>>> print lxml.etree.tostring(root, pretty_print=True)
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<rdf:Description rdf:about="http://purl.org/NET/FOO"/>
</rdf:RDF>
>>>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.