Java XML Insert a parent node -
i have following xml
<root> <page> <object ref="a"></object> <object ref="b"></object> </page> </root>
i want convert
<root> <page> <objectgroup ref="a"> <object ref="a"/> </objectgroup> <objectgroup ref="b"> <object ref="b"/> </objectgroup> </page> </root>
basically want introduce new parent node. used below way it's introducing more parents
private static void loadroots(string xmlpath) { document doc = migrate.inittreeopfromstring(xmlpath); element rootelement = doc.getdocumentelement(); loadpage(rootelement); migrate.finishtreeop(doc, "d:\\a.xml"); } private static void loadpage(element root) { nodelist pagenodes = root.getchildnodes(); (int j = 0; j < pagenodes.getlength(); j++) { node pagenode = pagenodes.item(j); if (pagenode.getnodetype() == node.element_node) { loadobject((element) pagenode); } } } private static void loadobject(element pagenode) { nodelist objectnodes = pagenode.getchildnodes(); (int j = 0; j < objectnodes.getlength(); j++) { node objectnode = objectnodes.item(j); if (objectnode.getnodetype() == node.element_node) { element objgroup = pagenode.getownerdocument().createelement("objectgroup"); string ref = objectnode.getattributes().getnameditem("ref").gettextcontent(); objgroup.setattribute("ref", ref); pagenode.removechild(objectnode); objgroup.appendchild(objectnode); pagenode.appendchild(objgroup); } } }
but output is
<root> <page> <objectgroup ref="b"> <object ref="b"/> </objectgroup> <objectgroup ref="a"> <objectgroup ref="a"> <objectgroup ref="a"> <object ref="a"/> </objectgroup> </objectgroup> </objectgroup> </page> </root>
which not wanted. how solve this
it's mistake.i should have used insertbefore. did trick
private static void loadobject(element pagenode) { nodelist objectnodes = pagenode.getchildnodes(); (int j = 0; j < objectnodes.getlength(); j++) { node objectnode = objectnodes.item(j); if (objectnode.getnodetype() == node.element_node) { element objgroup = pagenode.getownerdocument().createelement("objectgroup"); string ref = objectnode.getattributes().getnameditem("ref").gettextcontent(); objgroup.setattribute("ref", ref); pagenode.insertbefore(objgroup, objectnode); objgroup.appendchild(objectnode); } } }
Comments
Post a Comment