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

Beitrag lesen

Hallo frankx.

$index_nodes = $obj_doc->documentElement->getElementsByTagName('index');
$eintrag_nodes = $obj_doc->documentElement->getElementsByTagName('eintrag');

foreach ($index_nodes as $key => $obj_node) {
if ($obj_node->nodeValue == "I2") echo $position = $key;
}
echo $eintrag_nodes->item($position)->nodeValue;


> oder?  
  
Da du es sicher ausprobiert hast und gemerkt hast, dass es funktioniert, muss ich eigentlich nichts mehr dazu sagen.  
Nur zwei Dinge; zum einen:  
  
Wie in JS kannst du getElementsByTagName überall verwenden. Wenn du, wie hier, einfach nur den Zugriff auf die betreffenden Elementknoten willst, musst du documentElement nicht verwenden, da unnötig.  
  
Hier einmal in JS:  
`var index_nodes = document.getElementsByTagName('index');`{:.language-javascript}  
  
Und nun in PHP:  
`$index_nodes = $obj_doc2->getElementsByTagName('index');`{:.language-php}  
  
Du siehst, dass das Resultat identisch ist. Die getElementsByTagName-Methode solltest du nur direkt an ein Elementobjekt anhängen, wenn du auch wirklich nur Kindelemente in diesem Elementobjekt haben möchtest und nicht alle aus dem gesamten Dokument.  
  
Nun zum anderen:  
Die vorliegende Struktur erscheint mir nicht sonderlich sinnvoll. Ich würde die betroffenen Daten in ein zusammenfassendes Element verpacken und diesem als [Attributwert](http://de2.php.net/manual/de/function.dom-domelement-getattribute.php) den Index verpassen. Wenn dir dies die Verarbeitung aber zu sehr erschwert, kannst du natürlich auch deine derzeitige Struktur beibehalten.  
  
  
Einen schönen Montag noch.  
  
Gruß, Ashura  

-- 
sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|  
[<mathbr:del.icio.us/>](http://del.icio.us/mathbr) [<mathbr:w00t/>](http://w00t.noctus.net)