Ashura: XML - simple,Dom...,DOMDocument Wertezugriff

Beitrag lesen

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/