Insert after x node minidom xml python -
Insert after x node minidom xml python -
i'm appending node xml, want insert before tags, possible?
newnode = xmldoc.createelement("tag2") txt = xmldoc.createtextnode("value2") newnode.appendchild(txt) n.appendchild(newnode)
this xml. when append child, add together after unimed, want insert after cantidad , before unimed. (simplified version of xml) "item" can have more childs, , not know how many.
<ns0:item> <ns0:cantidad>1</ns0:cantidad> <ns0:unimed>l</ns0:unimed> </ns0:item>
i think can solve reading al childs of item, erase them, , add together them in order want. dont think best idea...
any ideas?
edited
solution
itemchildnodes = n.childnodes n.insertbefore(newnode, itemchildnodes[itemchildnodes.length-2])
use insertbefore
method insert new created tag.
demo:
>>> xml.dom import minidom >>> content = """ ... <xml> ... <item> ... <cantidad>1</cantidad> ... <unimed>l</unimed> ... </item> ... </xml> ... """ >>> root = minidom.parsestring(content) >>> insert_tag = root.createelement("tag2") >>> htext = root.createtextnode('test') >>> insert_tag.appendchild(htext) <dom text node "'test'"> >>> >>> items = root.getelementsbytagname("item") >>> item = items[0] >>> item_chidren = item.childnodes >>> item.insertbefore(insert_tag, item_chidren[2]) <dom element: tag2 @ 0xb700da8c> >>> root.toxml() u'<?xml version="1.0" ?><xml>\n\t<item>\n\t <cantidad>1</cantidad><tag2>test</tag2>\n\t <unimed>l</unimed>\n\t</item>\n</xml>' >>>
python xml minidom
Comments
Post a Comment