Sobald das DOM Document-Objekt erzeugt wurde, kann mit diesem Objekt und der Funktion Xpath_new_context() ein Xpath-Kontext erzeugt werden, welcher als Parameter das aktuelle DOM Document-Objekt übernimmt. Dieser Kontext wird zur Auswertung des Xpath-Ausdrucks verwendet und gegebenenfalls auch zum Registrieren von Namespaces verwendet. Da das Beispiel-XML einen Namespace enthält, wird dieser mit der Funktion Xpath_register_ns() registriert. Damit können Xpath-Abfragen erstellt werden, die Präfixe enthalten. Die Funktion Xpath_register_ns() erwartet drei Parameter: den Xpath-Kontext, das Präfix und den Namespace.
Nun kann man Xpath-Abfragen ausführen. Dies geschieht mithilfe der Funktion Xpath_eval(), deren erster Parameter der Xpath-Kontext und der zweite der Xpath-Ausdruck ist. Die Funktion gibt ein Array von DOM Nodes zurück. Im Beispielcode wird dieses Node-Set durchlaufen und eine entsprechende Ausgabe erzeugt.
Im ersten Xpath-Beispiel werden alle x:dog text-Elemente unterhalb der x:row-Knoten ausgelesen, bei denen das Attribut „color“ gleich „yellow“ ist. An dieser Stelle unterscheidet sich der Xpath-Ausdruck in PHP etwas von einem Xpath-Ausdruck in MSXML. Der „/text()“-Teil des Ausdrucks wurde eingefügt, um nur die Textknoten zurückzugeben. Bei MSXML greift man auf die Textknoten über die Eigenschaft „text“ zu. Über die Eigenschaft „content“ des zurückgegebenen Textknotens kann man dessen Inhalt auslesen.
Im zweiten Beispiel werden alle x:dog-Elemente unterhalb der x:row-Knoten ausgelesen. Diesmal wird allerdings die Methode dump_node() auf das DOM Document-Objekt angewandt, um den vollständigen XML-Code des entsprechenden Knotens auszudrucken. Die Methode dump_node() erwartet einen Parameter: den DOM Node, dessen Inhalt man ausgeben möchte.
Im letzten Beispiel werden alle x:cat-Textknoten und alle x:dog-Textknoten ausgelesen, bei denen das „color“-Attribut entweder „white“ oder „grey“ ist. Auch hier werden alle Knoten durchlaufen und der Inhalt jedes Textknotens ausgegeben. Und ganz zum Schluss sollte man das DOM Document-Objekt wieder aus dem Speicher entfernen.
Neueste Kommentare
Noch keine Kommentare zu Xpath-Abfragen mit PHP
Kommentar hinzufügenVielen Dank für Ihren Kommentar.
Ihr Kommentar wurde gespeichert und wartet auf Moderation.