I already registe" /> I already registe" /> I already registe"/>

How to set namespace for attributes in xml.etree

76 Views Asked by At

I want to set namespace for attribute in ElementTree to get following result.

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

I already registered namespaces. But, How should I change the following?

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

Thanks for any help.

1

There are 1 best solutions below

0
Hermann12 On

You have to .set() the attribute:

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)

Output:

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