为什么 xml.etree.ElementTree.parse 将命名空间元素转换为小写
Why does xml.etree.ElementTree.parse converts namespace elements in lowercase
我想指示 ET.parse 保留 XML 中的命名空间大小写
import xml.etree.ElementTree as ET
tree = ET.parse("mimeTypes.rdf")
ET.dump(tree)
<rdf:RDF xmlns:ns1="http://home.netscape.com/NC-rdf#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<rdf:Description ns1:value="irc" rdf:about="urn:scheme:irc">
<ns1:handlerProp rdf:resource="urn:scheme:handler:irc" />
</rdf:Description>
<rdf:Description ns1:value="application/pdf" rdf:about="urn:mimetype:application/pdf">
<ns1:handlerProp rdf:resource="urn:mimetype:handler:application/pdf" />
</rdf:Description>
原始文件如下所示:
<?xml version="1.0"?>
<RDF:RDF xmlns:NC="http://home.netscape.com/NC-rdf#"
xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<RDF:Description RDF:about="urn:scheme:irc"
NC:value="irc">
<NC:handlerProp RDF:resource="urn:scheme:handler:irc"/>
</RDF:Description>
<RDF:Description RDF:about="urn:mimetype:application/pdf"
NC:value="application/pdf">
<NC:handlerProp RDF:resource="urn:mimetype:handler:application/pdf"/>
</RDF:Description>
显然我必须注册 XML 中使用的命名空间:
import xml.etree.ElementTree as ET
tree = ET.parse("mimeTypes.rdf")
et.register_namespace('NC', 'http://home.netscape.com/NC-rdf#')
et.register_namespace('RDF', 'http://www.w3.org/1999/02/22-rdf-syntax-ns#')
tree.write("tmp.xml", xml_declaration=True, encoding='utf-8', method="xml")
我想指示 ET.parse 保留 XML 中的命名空间大小写
import xml.etree.ElementTree as ET
tree = ET.parse("mimeTypes.rdf")
ET.dump(tree)
<rdf:RDF xmlns:ns1="http://home.netscape.com/NC-rdf#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<rdf:Description ns1:value="irc" rdf:about="urn:scheme:irc">
<ns1:handlerProp rdf:resource="urn:scheme:handler:irc" />
</rdf:Description>
<rdf:Description ns1:value="application/pdf" rdf:about="urn:mimetype:application/pdf">
<ns1:handlerProp rdf:resource="urn:mimetype:handler:application/pdf" />
</rdf:Description>
原始文件如下所示:
<?xml version="1.0"?>
<RDF:RDF xmlns:NC="http://home.netscape.com/NC-rdf#"
xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<RDF:Description RDF:about="urn:scheme:irc"
NC:value="irc">
<NC:handlerProp RDF:resource="urn:scheme:handler:irc"/>
</RDF:Description>
<RDF:Description RDF:about="urn:mimetype:application/pdf"
NC:value="application/pdf">
<NC:handlerProp RDF:resource="urn:mimetype:handler:application/pdf"/>
</RDF:Description>
显然我必须注册 XML 中使用的命名空间:
import xml.etree.ElementTree as ET
tree = ET.parse("mimeTypes.rdf")
et.register_namespace('NC', 'http://home.netscape.com/NC-rdf#')
et.register_namespace('RDF', 'http://www.w3.org/1999/02/22-rdf-syntax-ns#')
tree.write("tmp.xml", xml_declaration=True, encoding='utf-8', method="xml")