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

Popular posts from this blog

java - How to set log4j.defaultInitOverride property to false in jboss server 6 -

c - GStreamer 1.0 1.4.5 RTSP Example Server sends 503 Service unavailable -

Using ajax with sonata admin list view pagination -