问题描述
我正在解析一个XML文件,替换它的值并覆盖它,一切正常,但是覆盖后缺少我两个根目录的名称空间之一。
有Xml文件输入:
<?xml version="1.0" encoding ="utf8"?>
<Document xmlns:xsi = "sample" xmlns ="sample2">
有输出:
<?xml version='1.0' encoding='UTF-8'?>
<Document xmlns="sample2">
ET.register_namespace('xsi',"sample")
ET.register_namespace('',"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"/>