猿问

覆盖 XML 文件并且我的命名空间之一丢失

我正在解析一个 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')

您知道问题是什么以及如何解决它吗?


四季花海
浏览 116回答 1
1回答

呼啦一阵风

使用 lxml 库可能会更容易:from lxml import etreensmap = {'xsi': "sample", None: "sample2"}root = etree.Element('Document', nsmap=nsmap)print(etree.tostring(root))这给出了所需的输出:<Document xmlns:xsi="sample" xmlns="sample2"/>
随时随地看视频慕课网APP

相关分类

Python
我要回答