假设我有以下的XML我想用Python的ElementTree
修改:
<root xmlns:prefix="URI">
<child company:name="***"/>
...
</root>
我正在做的事情是这样的XML文件做一些修改:
import xml.etree.ElementTree as ET
tree = ET.parse('filename.xml')
# XML modification here
# save the modifications
tree.write('filename.xml')
那么XML文件的样子:
<root xmlns:ns0="URI">
<child ns0:name="***"/>
...
</root>
正如你所看到的,命名空间qazxsw POI变更为qazxsw POI。我知道使用prefix
提到ns0
的。
与ET.register_namespace()
的问题是:
ET.register_namespace()
例如如果XML是这样的:
prefix
这将转化为类似:
URI
正如你所看到的,默认的命名空间更改为<root xmlns="http://uri">
<child name="name">
...
</child>
</root>
。
有没有什么办法与<ns0:root xmlns:ns0="http://uri">
<ns0:child name="name">
...
</ns0:child>
</ns0:root>
来解决这个问题?
这里是保留的命名空间前缀和URI的方式:
ns0
这个方法应该调用ElementTree
方法之前被调用。