Mailinglisten-Archive |
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