Skip to content Skip to sidebar Skip to footer

Python Xml.etree.elementtree Append To Subelement

I am trying to use xml.etree.ElementTree to parse a xml file, find a specific tag, append a child to that tag, append another child to the newly created tag and add text to the lat

Solution 1:

You need to specify b as a parent element for c.

Also, for getting the a tag you don't need a loop - just take the root (a).

import xml.etree.ElementTree as ET

tree = ET.parse('test.xml')
root = tree.getroot()

a = root.find('a')
b = ET.SubElement(a, 'b')
c = ET.SubElement(b, 'c')
c.text = 'text3'print ET.tostring(root)

prints:

<root><a><b><c>text1</c></b><b><c>text2</c></b><b><c>text3</c></b></a></root>

Solution 2:

I prefer to define my own function for adding text:

def SubElementWithText(parent, tag, text):
    attrib = {}
    element = parent.makeelement(tag, attrib)
    parent.append(element)
    element.text = text
    return element

Which then is very convenient to use as:

import xml.etree.ElementTree as ETtree= ET.parse('test.xml')
root = tree.getroot()

a = root.find('a')
b = ET.SubElement(a, 'b')
c = SubElementWithText(b, 'c', 'text3')

Post a Comment for "Python Xml.etree.elementtree Append To Subelement"