Hallo frankx.
Was denk ich falsch?
Vielleicht hilft dir dieses (nicht sonderlich saubere) Beispiel weiter:
<?php
error_reporting(E_ALL);
header('content-type: text/plain; charset=utf-8');
$str_doc = '<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<!DOCTYPE knoten>
<knoten>
<unterknoten1>CheckMe</unterknoten1>
<unterknoten2>ChangeMe</unterknoten2>
</knoten>';
$obj_doc = new DOMDocument(); // Neues Objekt erzeugen
$obj_doc->loadXML($str_doc); // Obigen String hineinladen
$obj_nodes = $obj_doc->documentElement->getElementsByTagName('*'); // Alle Kindknoten des Root-Elementes einfangen
foreach ($obj_nodes as $obj_node) { // Ausgeben, was gefunden wurde
echo '<'.$obj_node->tagName.'>'.$obj_node->nodeValue.'</'.$obj_node->tagName.">\n";
}
// Sofern der Tagname des ersten gefangenen Knotens „unterknoten1“ und sein Wert „CheckMe“ ist
if ($obj_nodes->item(0)->tagName == 'unterknoten1' && $obj_nodes->item(0)->nodeValue == 'CheckMe') {
$obj_nodes->item(1)->nodeValue = 'YouMadeIt'; // Wert des zweiten Unterknotens manipulieren
}
echo "\n";
foreach ($obj_nodes as $obj_node) { // Ausgeben, wie das ganze nun aussieht
echo '<'.$obj_node->tagName.'>'.$obj_node->nodeValue.'</'.$obj_node->tagName.">\n";
}
?>
Ich habe versucht, den Code ein wenig zu erläutern; sag' was du nicht verstehst. (Wie ich bereits sagte, ist das PHP-DOM dem JS-DOM sehr ähnlich, wenn man bereits Umgang mit zweiterem hat, macht sich dies folgerichtig bei ersterem bezahlt.)
Die Ausgabe ist wie von dir wahrscheinlich gewünscht:
<unterknoten1>CheckMe</unterknoten1>
<unterknoten2>ChangeMe</unterknoten2><unterknoten1>CheckMe</unterknoten1>
<unterknoten2>YouMadeIt</unterknoten2>
Einen schönen Sonntag noch.
Gruß, Ashura
--
sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
mathbr:del.icio.us/ mathbr:w00t/
sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
mathbr:del.icio.us/ mathbr:w00t/