I wonder if it is better add an element by opening file, search 'good place' and add string which contains xml code. Or use some library... i have no idea. I know how can i get nodes and properties from xml through for example lxml but what's the simpliest and the best way to add?
A:
The safest way to add nodes to an XML document is to load it into a DOM, add the nodes programmatically and write it out again. There are several Python XML libraries. I have used minidom, but I have no reason to recommend it specifically over the others.
Adam Crossland
2010-06-04 21:05:32
A:
You could use lxml.etree.Element to make the xml node(s), and use append or insert to attach them into 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))
yields:
<root>
<node1>
<node2 a1="x1"> ... </node2>
<node3 a1="x3">...</node3><node2 a1="x2"> ... </node2>
<node2 a1="x1"> ... </node2>
</node1>
</root>
unutbu
2010-06-04 22:31:57
Thanks, lxml is very simple and clarify.
matiit
2010-06-05 10:30:39