You can use lxml.etree.Element to create xml node (s), and use append or insert to attach them to an XML document:
data='''\ <root> <node1> <node2 a1="x1"> ... </node2> <node2 a1="x2"> ... </node2> <node2 a1="x1"> ... </node2> </node1> </root> ''' doc = lxml.etree.XML(data) e=doc.find('node1') child = lxml.etree.Element("node3",attrib={'a1':'x3'}) child.text='...' e.insert(1,child) print(lxml.etree.tostring(doc))
gives:
<root> <node1> <node2 a1="x1"> ... </node2> <node3 a1="x3">...</node3><node2 a1="x2"> ... </node2> <node2 a1="x1"> ... </node2> </node1> </root>
source share