phpbar.de logo

Mailinglisten-Archive

[php] DOMNode->appendChild() an bestimmte Stelle der Nodelist

[php] DOMNode->appendChild() an bestimmte Stelle der Nodelist

Jens Giessmann jg at handcode.de
Don Aug 18 21:04:17 CEST 2005


Hi,

Ich muss/moechte in eine bestehende XML Strukur einen neuen Node
einhaengen.

An sich kein Problem, aber, ich moechte es an einer bestimmten Stelle
tun und nicht einfach hinten anhaengen.

Ich verwende dazu PHP5.

Bsp:

Ausgangspunkt ist folgende XML-Struktur

----------------------------------------------------------------------
<?xml version="1.0" encoding="ISO-8859-1"?>
<root>
  <parent>
    <child/>
    <child/>
  </parent>
</root>
----------------------------------------------------------------------

Jetzt kann ich mit dem folgenden Code einen neuen Node in
<parent></parent> einfuegen.

----------------------------------------------------------------------
<?php 
 
$xml_src = 'test.xml'; 
 
$parent_path = "//parent"; 
 
// Create a new DOM document 
$dom = new DomDocument();   
$dom->load($xml_src);  
 
// Find the parent node 
$xpath = new DomXPath($dom); 
$parent = $xpath->query($parent_path); 
 
// Create an element 
$element = $dom->createElement('neuernode'); 
 
// Append the element 
$parent->item(0)->appendChild($element); 
 
echo $dom->saveXML(); 
 
?> 
----------------------------------------------------------------------

ergibt:

----------------------------------------------------------------------
<?xml version="1.0" encoding="ISO-8859-1"?>
<root>
  <parent>
    <child/>
    <child/>
    <neuernode/>
  </parent>
</root>
----------------------------------------------------------------------

Haben will ich aber z.B.:

----------------------------------------------------------------------
<?xml version="1.0" encoding="ISO-8859-1"?>
<root>
  <parent>
    <child/>
    <neuernode/>
    <child/>
  </parent>
</root>
----------------------------------------------------------------------

Irgendwelche Ideen?

Die Nachbarkinder anhand von Parametern und XPath kann ich problemlos
finden, ich hab nur keinen Plan wie ich appendchild() das Ziel
beibringen kann. (habe die Params hier im Bsp. der Einfachheit halber
weggelassen).

Hab auch schon gedacht zu versuchen die Nodeliste nach dem Append zu
sortieren, aber vielleicht weiss ja irgendwer was Pfiffiges ;-)

-- 

Gruss Jens

php::bar PHP Wiki   -   Listenarchive