【发布时间】:2019-10-26 11:31:11
【问题描述】:
当我解析 XML 文件时,在写入新的 XML 文件时会删除文件中的现有命名空间。如何在保留正在解析的文件中的现有命名空间的同时写入新的 XML 文件?
我尝试根据这篇文章中提供的答案注册命名空间,但在我的最终结果中看不到差异:Saving XML files using ElementTree
from xml.etree import ElementTree as ET
ET.register_namespace('xsi', "http://www.w3.org/2001/XMLSchema-instance")
ET.register_namespace('xsd', "http://www.w3.org/2001/XMLSchema")
tree = ET.parse(file_path)
tree.write('./new.xml',
xml_declaration = True,
encoding = 'utf-8',
method = 'xml')
原始 XML:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<userSettings>
<settingsList>
<setting name="ConnectionProperties" serializeAs="Xml">
<value>
<SftpConnectionProperties xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Name></Name>
</SftpConnectionProperties>
</value>
</setting>
<setting name="WebUrl" serializeAs="String">
<value>https://test.com</value>
</setting>
</settingsList>
</userSettings>
</configuration>
执行代码后的XML:
<?xml version='1.0' encoding='utf-8'?>
<configuration>
<userSettings>
<settingsList>
<setting name="ConnectionProperties" serializeAs="Xml">
<value>
<SftpConnectionProperties>
<Name />
</SftpConnectionProperties>
</value>
</setting>
<setting name="WebUrl" serializeAs="String">
<value>https://test.com</value>
</setting>
</settingsList>
</userSettings>
</configuration>
我想将原始 XML 文件中的命名空间保留在新的 XML 文件中。
【问题讨论】:
标签: xml python-3.x parsing namespaces