Mailinglisten-Archive |
Hi Albin, Danke fuer dein Beispiel, werd ich mir mal genauer anschauen. Aber kaum war die Mail draussen habe ich auf php.net (wo auch sonst) genau das gefunden was ich brauche. Neben DOMNode->appendChild() gibt es ja auch noch DOMNode->insertBefore() Wenn ich also mit Xpath den Parent-Node und den Node vor dem ich den neuen Node einfuegen will raussuche geht es ganz einfach. Hier meine Loesung: Es soll zwischen child 1 und 2 ein neuer Node eingefuegt werden. ---------------------------------------------------------------------- <?xml version="1.0" encoding="ISO-8859-1" ?> <root> <parent> <child nr="1"/> <child nr="2"/> </parent> </root> ---------------------------------------------------------------------- Hier der Code: ---------------------------------------------------------------------- <?php $xml_src = 'test.xml'; // Xpath-Querys $parent_path = "//parent"; $next_path = "//parent/child[@nr='2']"; // Create a new DOM document $dom = new DomDocument(); $dom->load($xml_src); // Find the parent node $xpath = new DomXPath($dom); // Find next Child $parent = $xpath->query($parent_path); $next = $xpath->query($next_path); // Create the new element $element = $dom->createElement('neuernode'); // Insert the element before a Child $parent->item(0)->insertBefore($element, $next->item(0)); echo $dom->saveXML(); ?> ---------------------------------------------------------------------- Ergibt genau was ich brauche. Das packe ich jetzt noch so in eine Funktion/Methode, dass wenn ich einen Node dazwischen haengen will insertBefore() mit 2 Xpath-Pfaden verwendet wird und sonst eben mit appendChild im Parent einfach hinten angehaengt wird. -- Gruss Jens
php::bar PHP Wiki - Listenarchive