araç köşesi

XPath Tester

Einen XPath-1.0-Ausdruck an Ihrem eigenen XML ausprobieren; passende Elemente, Attribute oder das Ergebnis von count() sehen

Ihre Daten bleiben bei Ihnen. Die Umwandlung läuft im Browser; nichts wird an einen Server gesendet.

So funktioniert es

XPath ist die Ausdruckssprache, mit der man Elemente, Attribute oder Text aus einem XML-Dokument auswählt. Selenium-Tests, XSLT und Programme, die Daten aus XML-Dateien wie einer XRechnung lesen, arbeiten damit. Fügen Sie das XML links ein und tippen Sie den Ausdruck; das Ergebnis rechts ändert sich beim Schreiben. Im Beispiel liefert //buch[preis<10]/titel die Titel der zwei Bücher unter 10: Die Verwandlung und Das Parfum. Preise stehen im XML mit Punkt (9.90), weil XPath nur diese Schreibweise als Zahl liest; mit 9,90 fände preis<10 das Buch nicht. Jeder Treffer steht in einer eigenen Zeile: ein Element als XML, ein Attribut als name="wert", mit text() gewählter Text als reiner Text. Ausdrücke, die eine Zahl (count(//buch) ergibt 3), einen Text (string()) oder wahr/falsch (//jahr=1901 ergibt true) liefern, zeigen einen einzelnen Wert, und der Hinweis unten nennt den Typ. Hat das Dokument Namespace-Präfixe wie xmlns:cbc, schreiben Sie dasselbe Präfix (//cbc:ID). Ist das XML fehlerhaft, werden Zeile und Spalte des Problems genannt.

Dieses Werkzeug ist auch als xpath tester, xpath online testen, xpath beispiele, xpath ausdruck, xpath abfrage xml bekannt.

Was ist XPath?

XPath (XML Path Language) ist ein W3C-Standard, der Knoten in einem XML-Dokument über Pfadausdrücke auswählt. Ein Pfad wie /buchhandlung/buch wählt Elemente, @kategorie Attribute, text() den Textinhalt; eine Bedingung in eckigen Klammern filtert das Ergebnis. XSLT, XQuery, Selenium und viele XML-Bibliotheken nutzen XPath; Browser unterstützen die 1999 erschienene Version 1.0.

Was ist XML-Namespace?

Ein Namespace legt über eine Adresse fest, zu welchem Vokabular gleichnamige Elemente gehören: Die Deklaration xmlns:cbc="urn:..." sagt, dass Elemente mit dem Präfix cbc: zu dieser Adresse gehören. XRechnung (UBL) und SOAP-Nachrichten verwenden viele Namespaces. In XPath muss neben dem Elementnamen auch der Namespace passen; deshalb gehört das Präfix auch in den Ausdruck.

Was ist der Unterschied zwischen XPath und CSS-Selektor?

Ein CSS-Selektor (div.produkt > a) wählt nur Elemente und bewegt sich im Dokument nach unten; für Styling im Browser und zum Finden von Elementen in Selenium reicht das und ist schnell. XPath wählt zusätzlich Attribute und Textknoten, kann zum Elternelement (..) und zu Geschwistern springen, nach Text filtern (//a[text()='In den Warenkorb']) und mit count() oder sum() rechnen. Lesen Sie Werte aus XML-Daten oder müssen Sie ein Element über seinen Text finden, nehmen Sie XPath; wählen Sie nur Elemente in HTML aus, ist der CSS-Selektor kürzer.

Häufige XPath-Ausdrücke (mit dem Beispiel-XML)

Die folgenden Ausdrücke können Sie direkt am Buchhandlungs-Beispiel dieser Seite ausprobieren; die Ergebnisse stammen aus genau diesem Beispiel. Ein Schrägstrich geht eine Ebene tiefer, zwei Schrägstriche suchen in jeder Tiefe; eckige Klammern sind eine Bedingung, @ steht für ein Attribut.

  • //titel → die 3 titel-Elemente
  • //buch[@kategorie='roman']/autor → die Autoren der 2 Romane (Thomas Mann, Patrick Süskind)
  • //buch[preis<10]/titel/text() → nur der Text der Titel: Die Verwandlung, Das Parfum
  • /buchhandlung/buch[last()]/titel → Titel des letzten Buchs (Das Parfum)
  • count(//buch) → 3; sum(//preis) → 26.9
  • //titel/@sprache → die sprache-Attribute (sprache="de")

Namespaces und ehrliche Grenzen

Präfix-Namespaces (xmlns:cbc="...") werden aus der Deklaration im Dokument gelesen und im Ausdruck mit demselben Präfix geschrieben. Ein Standard-Namespace ohne Präfix (xmlns="...") ist die bekannte Falle von XPath 1.0: //buch findet dann nichts. Das Werkzeug bindet den Standard-Namespace in diesem Fall an das Präfix d:; schreiben Sie //d:buch oder //*[local-name()='buch']. Gibt es keinen Treffer, erinnert der Hinweis unten daran.

Das Werkzeug führt XPath 1.0 aus, dieselbe Version, die Browser eingebaut haben. Funktionen aus XPath 2.0 und 3.1 (matches, lower-case, tokenize, Datumsfunktionen) fehlen; verwenden Sie eine, nennt das Werkzeug die fehlende Funktion. Der Text muss wohlgeformtes XML sein: gewöhnliches HTML mit nicht geschlossenem <br> oder Attributen ohne Anführungszeichen ergibt einen Fehler. Auf einer echten Webseite testen Sie XPath in den Entwicklertools des Browsers mit $x("//a").

Häufige Fragen

Wie teste ich einen XPath-Ausdruck?

Fügen Sie das XML links auf dieser Seite ein und tippen Sie den Ausdruck in das XPath-Feld. Die gefundenen Elemente erscheinen sofort rechts, unten steht die Zahl der Knoten. Hat der Ausdruck einen Schreibfehler oder eine Funktion, die XPath 1.0 nicht kennt, sagt das Werkzeug das ausdrücklich.

Was ist der Unterschied zwischen // und /?

Ein Schrägstrich prüft nur die direkten Kinder: /buchhandlung/buch wählt die buch-Elemente direkt unter der Wurzel. Zwei Schrägstriche suchen in jeder Tiefe: //autor findet alle autor-Elemente, egal wo sie im Dokument stehen. Kennen Sie den Aufbau des Dokuments nicht genau, beginnen Sie mit //.

Warum liefert XPath bei XML mit Namespace kein Ergebnis?

Deklariert das Dokument mit xmlns="..." einen Standard-Namespace, sieht //buch nach der Regel von XPath 1.0 die Elemente in diesem Namespace nicht. Schreiben Sie in diesem Werkzeug //d:buch oder das namespace-unabhängige //*[local-name()='buch']. Bei Präfix-Namespaces wie xmlns:cbc genügt es, das Präfix aus dem Dokument zu übernehmen.

Wird mein XML an einen Server gesendet?

Nein. Das Lesen des XML und die Auswertung des XPath-Ausdrucks laufen vollständig in Ihrem Browser. Auch eine Rechnung oder ein Dokument mit Kundendaten verlässt diese Seite nicht.