Когда я анализирую XML-файл, существующие пространства имен в нем удаляются при записи в новый XML-файл. Как мне записать в новый XML-файл, сохраняя существующие пространства имен из файла, который я анализирую?
Я попытался зарегистрировать пространства имен на основе ответа, приведенного в этом посте, но не вижу различий в моем конечном результате: Сохранение файлов XML с использованием 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-файле.