如何为xml.etree中的属性设置命名空间

问题描述 投票:0回答:1

我想在 ElementTree 中设置属性的命名空间以获得以下结果。

<test xmlns:ns="test"><test1 ns:name="item1" /></test>

我已经注册了命名空间。但是,我应该如何更改以下内容?

test1 = ET.SubElement(test, "test1", name="item1")

感谢您的帮助。

python xml elementtree xml-namespaces
1个回答
0
投票

您必须

.set()
属性:

import xml.etree.ElementTree as ET

xml_string = """<?xml version="1.0" encoding="UTF-8"?>
<test xmlns:ns="test">
<test1 ns:name="item1" />
</test>"""

test = ET.fromstring(xml_string)
ET.register_namespace("ns","test")

test2 = ET.SubElement(test, "test2").set('{test}name', 'item2')

ET.indent(test, space = '  ')
ET.dump(test)

输出:

<test xmlns:ns="test">
  <test1 ns:name="item1" />
  <test2 ns:name="item2" />
</test>
© www.soinside.com 2019 - 2024. All rights reserved.