Python 3 使用 xml.etree.ElementTree 修改 XML 后出现 ns0 命名空间问题解决方法
ns0 是命名空间的缩写,表示默认命名空间。在使用 xml.etree.ElementTree 修改 XML 时,如果原始 XML 中定义了命名空间,那么在保存修改后的 XML 时,会自动添加命名空间前缀 ns0,以确保 XML 的正确性。
如果不想保存时出现 ns0,可以在修改 XML 之前先将命名空间删除,或者手动添加命名空间前缀。具体方法如下:
- 删除命名空间
import xml.etree.ElementTree as ET
# 解析 XML 文件
tree = ET.parse('example.xml')
root = tree.getroot()
# 删除命名空间
for elem in root.getiterator():
elem.tag = elem.tag.split('}', 1)[-1]
# 修改 XML
# ...
# 保存 XML
tree.write('example_modified.xml', encoding='utf-8', xml_declaration=True)
- 手动添加命名空间前缀
import xml.etree.ElementTree as ET
# 定义命名空间
ns = {'my_ns': 'http://example.com/ns'}
# 解析 XML 文件
tree = ET.parse('example.xml')
root = tree.getroot()
# 修改 XML
# ...
# 手动添加命名空间前缀
for elem in root.getiterator():
if not elem.tag.startswith('{'):
elem.tag = 'my_ns:' + elem.tag
# 保存 XML
tree.write('example_modified.xml', encoding='utf-8', xml_declaration=True, default_namespace=ns['my_ns'])
以上两种方法可以解决保存 XML 时出现 ns0 的问题。
原文地址: https://www.cveoy.top/t/topic/nHNo 著作权归作者所有。请勿转载和采集!