phpbar.de logo

Mailinglisten-Archive

[php] Entsprechung simpleXML und DOM

[php] Entsprechung simpleXML und DOM

Yannik Hampe yannik at cipher-code.de
Sam Jul 21 19:54:34 CEST 2007



Tim wrote:
> Hallo Liste,
> 
> Ich habe folgenden XML-Dokumentausschnitt:
> 
> <root>
>   <node1>
>     <param id="1">Param1</param>
>     <param id="2">Param3</param>
>     <param id="2">Param3</param>
>   </node1>
> </root>
> 
> 
> wenn ich mit simpleXML ein Objekt initialisiere, kann ich danach mittels
> 
> $root->node1
> 
> auf einen konkreten mir bekanntesn Knoten zugreifen.  Es ist von vorne
> herein klar, dass node1 nur ein einziges Mal vorkommt. 
> 
> Was ist denn die Entsprechung, wenn ich DOM nutze? Ich könnte zwar über
> getElementsByTagName('node1') vorgehen, erhalte dann aber wieder eine Liste
> von Knoten, die nur ein Element besitzt. Gibt es in DOM ähnlich wie bei
> simpleXML eine Syntax, den Knoten direkt anzusprechen?

Ich habe in php zar noch nie was über die DOM gemacht, aber meienes 
erachtens müsste man sowas über XPath machen:
/root/node1
Das würde dir alle Elemente geben, die auf diesen Pfad passen und da es 
nur ein Element gibt bekommst dua uch nur das eine.
Wenn es mehrere Elemente gäbe kommst du mit XPath so an das n-te Element:
/root/node1[n]
XPath ist 'ne super Sache. Bis jetzt ist mir noch kein Auswahlkriterium, 
nach welchem du dir bestimmte nodes raussuchen würdest eingefallen, dass 
du nicht mit XPath beschreiben könntest :-).

Der Rest, den du wissen musst steht hier:
http://de2.php.net/manual/en/function.dom-domxpath-query.php

$xpath = new DOMXPath($doc); //wobei $doc dein DOMDocument ist
$nodes =$xpath->query('/root/node1');

> 
> 
> Über eine kleine Einstiegshilfe würde ich mich sehr freuen.
> 
> 
> Liebe Grüße
> Tim
> 
> PS: Die Fülle der DOM Methoden erschlägt mich gerade ziemlich. Man weiß
> irgendwie gar nicht, wo man zuerst anfangen sollte.

Die DOM ist schon sehr mächtig. Das führt natürlich auch dazu, dass sie 
ein Ram-/ und CPU-"Verschwender" ist. Man muss sich überlegen, wo man es 
einsetzt :-).

Yannik

php::bar PHP Wiki   -   Listenarchive