Python 覆盖一个XML文件,我的一个命名空间丢失
我正在解析一个XML文件,替换它的值并覆盖它,一切正常,但覆盖后我的两个根的名称空间之一丢失了 我发现我必须注册我的名称空间,我这样做了,但没有改变: 有一个Xml文件输入:Python 覆盖一个XML文件,我的一个命名空间丢失,python,xml,Python,Xml,我正在解析一个XML文件,替换它的值并覆盖它,一切正常,但覆盖后我的两个根的名称空间之一丢失了 我发现我必须注册我的名称空间,我这样做了,但没有改变: 有一个Xml文件输入: <?xml version="1.0" encoding ="utf8"?> <Document xmlns:xsi = "sample" xmlns ="sample2"> 写作方法: tree.write(path
<?xml version="1.0" encoding ="utf8"?>
<Document xmlns:xsi = "sample" xmlns ="sample2">
写作方法:
tree.write(path , xml_declaration=True, method='xml', encoding='UTF-8')
您知道问题是什么吗?我如何解决它?使用lxml库可能会更容易:
from lxml import etree
nsmap = {'xsi': "sample", None: "sample2"}
root = etree.Element('Document', nsmap=nsmap)
print(etree.tostring(root))
提供所需输出:
<Document xmlns:xsi="sample" xmlns="sample2"/>
那么您使用的是ElementTree?也许没有使用xsi:省略这个名称空间会带来任何问题吗?是的,我的脚本中没有使用xsi,你认为这就是问题所在吗?省略未使用的名称空间似乎不是一个“问题”,为什么需要确保XML包含未使用的名称空间?
from lxml import etree
nsmap = {'xsi': "sample", None: "sample2"}
root = etree.Element('Document', nsmap=nsmap)
print(etree.tostring(root))
<Document xmlns:xsi="sample" xmlns="sample2"/>