Upload
others
View
18
Download
0
Embed Size (px)
Citation preview
xpath
#xpath
Inhaltsverzeichnis
Über 1
Kapitel 1: Erste Schritte mit xpath 2
Bemerkungen 2
Versionen 2
Examples 2
Beispiel-XML (ohne Namespaces) 2
Text auswählen 2
Wählen Sie ein Element aus 3
Allgemeine HTML-Operationen 3
Xpaths in der Browserkonsole testen 4
Kapitel 2: Elemente suchen, die bestimmte Attribute enthalten 5
Examples 5
Finde alle Elemente mit einem bestimmten Attribut 5
Finden Sie alle Elemente mit einem bestimmten Attributwert 5
Kapitel 3: Elemente suchen, die bestimmten Text enthalten 6
Examples 6
Finde alle Elemente mit bestimmtem Text 6
Kapitel 4: Holen Sie sich die Anzahl der Knoten 8
Syntax 8
Parameter 8
Bemerkungen 8
Examples 8
Wie viele Kinder hat Goku? 8
Wie viele Pflanzen gibt es im Haus? 8
Kapitel 5: Namensräume 10
Bemerkungen 10
Examples 10
Namespace-fähige Funktionen 10
Kapitel 6: Ortspfade und Achsen 11
Bemerkungen 11
Examples 11
Untergeordnete Elemente durchlaufen 11
Alle Nachkommen durchqueren 11
Ahnen durchqueren 12
Die "Selbst" -Achse 12
Durchlaufender und vorangegangener Knoten 12
Durchlaufende Attribut- und Namespace-Knoten 13
Kapitel 7: Prüfen Sie, ob der Text eines Knotens leer ist 14
Syntax 14
Bemerkungen 14
Examples 14
Prüfen Sie, ob Deborah einen Master hat und der Textwert nicht leer ist 14
Prüfen Sie, ob Dobby über einen Master verfügt und der Textwert nicht leer ist 14
Kapitel 8: Prüfen Sie, ob ein Knoten vorhanden ist 16
Syntax 16
Bemerkungen 16
Examples 16
Hat das Tier Stoßzähne? 16
Hat das Tier Hörner? 16
Gibt es Pflanzen im Haus? 17
Kapitel 9: Ruft Knoten relativ zum aktuellen Knoten ab 18
Syntax 18
Parameter 18
Bemerkungen 19
Examples 19
Finde meine Vorfahren 19
Finde meine Eltern 19
Finde meinen Großvater 20
Finde meinen Bruder 20
Holen Sie sich alle Avatare vor Parashurama 21
Holen Sie sich alle Avatare nach Parashurama 21
Holen Sie sich alle Avatare außer dem aktuellen (Parusharama) 22
Holen Sie sich alle Details (Kindknoten) von House 22
Holen Sie sich alle Zimmer (unmittelbare Kinder namens Room) in House 23
Holen Sie sich alle Zimmer (unabhängig von der Position) in House 23
Kapitel 10: Suchen Sie nach Knoten, die ein bestimmtes Attribut haben 25
Syntax 25
Parameter 25
Bemerkungen 25
Examples 25
Suchen Sie nach Knoten mit einem bestimmten Attribut 25
Suchen Sie nach Knoten mit einem bestimmten Attributwert 26
Suchen Sie nach Knoten, indem Sie den Wert eines Attributs mit einem Teilstring vergleiche 26
Finden Sie Knoten durch Übereinstimmen der Teilzeichenfolge des Attributwerts (ohne Berück 27
Suchen Sie nach Knoten, indem Sie einen Teilstring mit dem Anfang des Attributwerts angebe 27
Suchen Sie nach Knoten, indem Sie einen Teilstring verwenden, der mit dem Ende des Attribu 28
Kapitel 11: Wählen Sie Knoten aus, deren Namen einer Zeichenfolge entsprechen oder diese e29
Syntax 29
Parameter 29
Bemerkungen 29
Examples 29
Suchen Sie nach Knoten mit Namen als Licht, Gerät oder Sensor 29
Suchen Sie nach Knoten, deren Name Light enthält 30
Suchen Sie nach Knoten, deren Name mit Stern beginnt 31
Suchen Sie nach Knoten, deren Name mit Ball endet 31
Suche nach Knoten mit Namenslicht (Groß- und Kleinschreibung wird nicht berücksichtigt) 32
Kapitel 12: Wählen Sie Knoten basierend auf ihren untergeordneten Elementen aus 34
Examples 34
Wählen Sie Knoten basierend auf der untergeordneten Anzahl aus 34
Wählen Sie Knoten basierend auf einem bestimmten untergeordneten Knoten aus 35
Credits 37
Über
You can share this PDF with anyone you feel could benefit from it, downloaded the latest version from: xpath
It is an unofficial and free xpath ebook created for educational purposes. All the content is extracted from Stack Overflow Documentation, which is written by many hardworking individuals at Stack Overflow. It is neither affiliated with Stack Overflow nor official xpath.
The content is released under Creative Commons BY-SA, and the list of contributors to each chapter are provided in the credits section at the end of this book. Images may be copyright of their respective owners unless otherwise specified. All trademarks and registered trademarks are the property of their respective company owners.
Use the content presented in this book at your own risk; it is not guaranteed to be correct nor accurate, please send your feedback and corrections to [email protected]
https://riptutorial.com/de/home 1
Kapitel 1: Erste Schritte mit xpath
Bemerkungen
XPath ist eine Sprache zum Adressieren von Teilen eines XML-Dokuments.
Es wird in XSLT verwendet und ist eine Teilmenge von XQuery. Bibliotheken sind auch für die meisten anderen Programmiersprachen verfügbar.
XPath ist ein internationaler Standard mit von W3C veröffentlichten Spezifikationen:
XPath 1.0: XML Path Language (XPath), Version 1.0•XPath 2.0: XML Path Language (XPath) 2.0 (zweite Ausgabe)•XPath 3.0: XML Path Language (XPath) 3.0•
Versionen
Ausführung Veröffentlichungsdatum
1,0 1999-12-16
2,0 2007-01-23
3,0 2014-04-08
3.1 (W3C-Kandidatenempfehlung) 2015-12-17
Examples
Beispiel-XML (ohne Namespaces)
Hier ist ein Beispiel-XML, gegen das Beispiel-XPaths geschrieben werden können:
<r> <e a="1"/> <f a="2" b="1">Text 1</f> <f/> <g> <i c="2">Text 2</i> Text 3 <j>Text 4</j> </g> </r>
Text auswählen
https://riptutorial.com/de/home 2
Für das Beispiel-XML (ohne Namespaces):
Diese XPath,
/r/f/text()
wählt den Textknoten mit diesem String-Wert aus:
"Text 1"
Und dieser XPath,
string(/r/f)
gibt den String-Wert von f , der auch:
"Text 1"
Wählen Sie ein Element aus
Für das Beispiel-XML (ohne Namespaces):
Diese XPath,
/r/e
wird dieses Element auswählen:
<e a="1"/>
Allgemeine HTML-Operationen
Wenn die Eingabe HTML DOM ist
<html> <body> <a>link</a> <div class='container' id='divone'> <p class='common' id='enclosedone'>Element One</p> <p class='common' id='enclosedtwo'>Element Two</p> </div> </body> </html>
Suchen Sie ein Element mit einer bestimmten ID auf der gesamten Seite
//*[@id='divone'] # Returns <div class='container' id='divone'>
https://riptutorial.com/de/home 3
Suchen Sie ein Element mit einer bestimmten ID in einem bestimmten Pfad
/html/body/div/p[@id='enclosedone'] # Returns <p class='common' id='enclosedone'>Element One</p>
Wählen Sie ein Element mit einer bestimmten ID und Klasse aus
//p[@id='enclosedone' and @class='common'] # Returns <p class='common' id='enclosedone'>Element One</p>
Wählen Sie den Text eines bestimmten Elements aus
//*[@id='enclosedone']/text() # Returns Element One
Xpaths in der Browserkonsole testen
Eine schnelle Methode zum Testen Ihres xpath ist in der Konsole Ihres Browser-Entwicklertools.
Format ist
$x('//insert xpath here')
$ - Gibt an, dass es sich um einen Selektor handelt.
x - gibt an, dass xpaths verwendet wird
Beispiel:
$x("//button[text() ='Submit']")
Bei Eingabe dieses Befehls werden alle Vorkommen von Elementen zurückgegeben, bei denen es sich um Schaltflächen handelt, deren Text gleich "Senden" ist.
Erste Schritte mit xpath online lesen: https://riptutorial.com/de/xpath/topic/883/erste-schritte-mit-xpath
https://riptutorial.com/de/home 4
Kapitel 2: Elemente suchen, die bestimmte Attribute enthalten
Examples
Finde alle Elemente mit einem bestimmten Attribut
Stellen Sie sich folgendes XML vor:
<root> <element foobar="hello_world" /> <element example="this is one!" /> </root>
/root/element[@foobar]
und gibt das <element foobar="hello_world" /> .
Finden Sie alle Elemente mit einem bestimmten Attributwert
Stellen Sie sich folgendes XML vor:
<root> <element foobar="hello_world" /> <element example="this is one!" /> </root>
Der folgende XPath-Ausdruck:
/root/element[@foobar = 'hello_world']
gibt das <element foobar="hello_world" /> .
doppelte Anführungszeichen können auch verwendet werden:
/root/element[@foobar="hello_world"]
Elemente suchen, die bestimmte Attribute enthalten online lesen: https://riptutorial.com/de/xpath/topic/6488/elemente-suchen--die-bestimmte-attribute-enthalten
https://riptutorial.com/de/home 5
Kapitel 3: Elemente suchen, die bestimmten Text enthalten
Examples
Finde alle Elemente mit bestimmtem Text
Stellen Sie sich folgendes XML vor:
<root> <element>hello</element> <another> hello </another> <example>Hello, <nested> I am an example </nested>.</example> </root>
Der folgende XPath-Ausdruck:
//*[text() = 'hello']
gibt das <element>hello</element> , nicht jedoch das Element <another> . Dies liegt daran, dass das Element <another> Leerzeichen um den hello Text enthält.
Um sowohl <element> als auch <another> abzurufen, könnte man Folgendes verwenden:
//*[normalize-space(text()) = 'hello']
oder
//*[normalize-space() = 'hello']
Dadurch wird der umgebende Leerraum getrimmt, bevor der Vergleich durchgeführt wird. Hier können wir sehen, dass der Node-Bezeichner text() bei Verwendung von normalize-space optional normalize-space .
Um ein Element zu finden, das bestimmten Text enthält, können Sie die Funktion contains verwenden. Der folgende Ausdruck gibt das <example> -Element zurück:
//example[contains(text(), 'Hello')]
Wenn Sie Text suchen möchten, der sich über mehrere untergeordnete / Textknoten erstreckt, können Sie verwenden . anstelle von text() . . bezieht sich auf den gesamten Textinhalt des Elements und seiner untergeordneten Elemente.
https://riptutorial.com/de/home 6
//example[. = 'Hello, I am an example .']
Um die mehreren Textknoten anzuzeigen, können Sie Folgendes verwenden:
//example//text()
was wird zurückkehren:
"Hallo, "•"Ich bin ein Beispiel"•"."•
Und um den gesamten Textinhalt eines Elements klarer zu sehen, kann man die string Funktion verwenden:
string(//example[1])
oder nur
string(//example)
Hallo, ich bin ein Beispiel.
Letzteres funktioniert, da XPath 1.0 bei der Übergabe eines Knotensatzes an Funktionen wie string nur den ersten Knoten (in Dokumentreihenfolge) in diesem Knotensatz betrachtet und den Rest ignoriert.
so:
string(/root/*)
würden zurückkehren:
Hallo
Elemente suchen, die bestimmten Text enthalten online lesen: https://riptutorial.com/de/xpath/topic/1903/elemente-suchen--die-bestimmten-text-enthalten
https://riptutorial.com/de/home 7
Kapitel 4: Holen Sie sich die Anzahl der Knoten
Syntax
Anzahl (Knotensatz)•
Parameter
Funktion kehrt zurück
Anzahl Gesamtanzahl der Knoten in der Knotengruppe
Bemerkungen
Wir können dies in Kombination mit anderen Funktionen und Achsen verwenden, um unsere Bedürfnisse zu erfüllen.
Examples
Wie viele Kinder hat Goku?
XML
<Goku> <child name="Gohan"/> <child name="Goten"/> </Goku>
XPATH
count(/Goku/child)
AUSGABE
2.0
Wie viele Pflanzen gibt es im Haus?
XML
<House>
https://riptutorial.com/de/home 8
<LivingRoom> <plant name="rose"/> </LivingRoom> <TerraceGarden> <plant name="passion fruit"/> <plant name="lily"/> <plant name="golden duranta"/> </TerraceGarden> </House>
XPATH
count(/House//plant)
AUSGABE
4.0
Holen Sie sich die Anzahl der Knoten online lesen: https://riptutorial.com/de/xpath/topic/4463/holen-sie-sich-die-anzahl-der-knoten
https://riptutorial.com/de/home 9
Kapitel 5: Namensräume
Bemerkungen
XPath 1.0 hat nicht das Konzept eines Standard-Namespaces.
Die im ursprünglichen XML-Dokument definierten Namespace-Präfixe wirken sich nicht auf XPath-Namespace-Präfixe aus, die explizit beim XPath-Provider registriert werden müssen. Andernfalls können Präfixe im XPath-Ausdruck nicht verwendet werden.
Examples
Namespace-fähige Funktionen
<root xmlns="http://test/"> <element xmlns:example="http://foobar/"> <example:hello_world attribute="another example" /> </element> </root>
Der Ausdruck /root gibt nichts zurück, da es auf der Root-Ebene des Dokuments kein nicht mit Namen versehenes Element namens root . Folgendes wird jedoch das Element <root xmlns="http://test/"> .
/*[namespace-uri() = 'http://test/' and local-name() = 'root']
Namensräume online lesen: https://riptutorial.com/de/xpath/topic/2324/namensraume
https://riptutorial.com/de/home 10
Kapitel 6: Ortspfade und Achsen
Bemerkungen
Ein XPath- Standortpfad besteht aus einer Reihe von Standortschritten, die durch ein Zeichen / getrennt sind:
step1/step2/step3
Ein Positionsschritt enthält eine Achse , einen Knotentest und eine optionale Liste von Prädikaten . Die Achse und der Knotentest werden durch zwei Doppelpunktzeichen :: . Die Prädikate sind in eckigen Klammern angegeben:
axis::nodeTest[predicate1][predicate2]
Die Auswertung eines Lokalisierungspfad beginnt mit einem Knotensatz den Kontextknoten durch den Kontext des Ausdrucks oder der Wurzelknoten, wenn die Positionspfad beginnt mit einem gegebenen enthält / . Bei jedem Schritt wird jeder Knoten N in der ursprünglichen Knotengruppe durch die Menge der Knoten ersetzt, die
kann von N nach der angegebenen Achse erreicht werden ,•entspricht dem Knotentest und•entspricht allen Prädikaten .•
Das Ergebnis einer Lage Pfadausdruck ist der letzte Knotensatz erhalten wird, nachdem alle Schritte der Verarbeitung Lage.
Examples
Untergeordnete Elemente durchlaufen
Durchlaufen von dem Wurzelknoten zu einem Abkömmling Elemente der Verwendung von child - Achse:
/child::html/child::body/child::div/child::span
Da die child Achse die Standardachse ist, kann dies als abgekürzt werden:
/html/body/div/span
Alle Nachkommen durchqueren
Mit den descendant und descendant-or-self können alle untergeordneten Elemente eines Knotens in beliebiger Tiefe gesucht werden. Im Gegensatz dazu das child durchläuft Achse nur unmittelbare
https://riptutorial.com/de/home 11
Kinder.
/child::html/descendant::span /child::html/descendant-or-self::*
Der doppelte Schrägstrich // ist eine Abkürzung für /descendant-or-self::node()/ . Die folgenden Ausdrücke sind also gleichwertig:
table//td child::table/descendant-or-self::node()/child::td child::table/descendant::td table/descendant::td
Ahnen durchqueren
Die parent Achse enthält nur das übergeordnete Element eines Knotens. Der folgende Ausdruck wählt das html Element aus, indem ein Umweg über das body Element genommen wird:
/child::html/child::body/parent::html
.. ist eine Verknüpfung für parent::node()
Die Achsen " ancestor und " ancestor-or-self durchlaufen alle Vorfahren eines Knotens. Der folgende Ausdruck gibt alle div Elemente zurück, die Vorfahren des Kontextknotens sind:
ancestor::div
Die "Selbst" -Achse
Die self Achse enthält nur den Kontextknoten selbst. Der Ausdruck . ist eine Abkürzung für self::node() und passt immer zum Kontextknoten. Die . Shortcut ist nützlich, um Nachkommen des Kontextknotens aufzulisten. Die folgenden Ausdrücke sind gleichwertig:
.//span self::node()/descendant-or-self::node()/child::span descendant::span
Die self kann in XPath 1.0-Prädikaten hilfreich sein. Um beispielsweise alle h1 , h2 und h3 Kinder des h3 auszuwählen:
*[self::h1 or self::h2 or self::h3]
Durchlaufender und vorangegangener Knoten
Die following-sibling und preceding-sibling enthalten die Geschwister vor oder nach dem Kontextknoten, und die following und preceding Achsen enthalten alle Knoten im Dokument vor oder nach dem Kontextknoten.
https://riptutorial.com/de/home 12
Keine dieser Achsen enthält Attribut- oder Namespace-Knoten.•Die following Achse enthält keine Nachkommen.•Die preceding Achse enthält keine Vorfahren.•
Beispiele:
following::span[1] following-sibling::*[last()]
Durchlaufende Attribut- und Namespace-Knoten
Die attribute und namespace Achsen enthalten alle Attribut- und Namespace-Knoten eines Elements. Das Kürzel @ steht für attribute:: , daher sind die folgenden gleichwertig:
child::div/attribute::class div/@class
Ortspfade und Achsen online lesen: https://riptutorial.com/de/xpath/topic/6171/ortspfade-und-achsen
https://riptutorial.com/de/home 13
Kapitel 7: Prüfen Sie, ob der Text eines Knotens leer ist
Syntax
boolean (path_to_node / text ())•string (path_to_node)! = ''•
Bemerkungen
Die boolesche Funktion hat andere Zwecke
Prüfen Sie, ob ein Knoten vorhanden ist1. Prüfen Sie, ob das Argument keine Zahl ist (NaN) oder 0 ist2.
String-Funktion wird verwendet, um den String-Wert eines Knotens zurückzugeben.
Examples
Prüfen Sie, ob Deborah einen Master hat und der Textwert nicht leer ist
XML
<Deborah> <address>Dark world</address> <master>Babadi</master> <ID>#0</ID> <colour>red</colour> <side>evil</side> </Deborah>
XPATH
boolean(/Deborah/master/text())
ODER
string(/Deborah/master) != ''
AUSGABE
true
Prüfen Sie, ob Dobby über einen Master verfügt und der Textwert nicht leer ist
https://riptutorial.com/de/home 14
XML
<Dobby> <address>Hogwartz</address> <master></master> <colour>wheatish</colour> <side>all good</side> </Dobby>
XPATH
boolean(/Dobby/master/text())
ODER
string(/Dobby/master) != ''
AUSGABE
false
Prüfen Sie, ob der Text eines Knotens leer ist online lesen: https://riptutorial.com/de/xpath/topic/7445/prufen-sie--ob-der-text-eines-knotens-leer-ist
https://riptutorial.com/de/home 15
Kapitel 8: Prüfen Sie, ob ein Knoten vorhanden ist
Syntax
boolean (path_to_node)•
Bemerkungen
Die boolesche Funktion hat andere Zwecke
Prüfen Sie, ob eine Zeichenfolge leer ist1. Prüfen Sie, ob das Argument keine Zahl ist (NaN) oder 0 ist2.
Examples
Hat das Tier Stoßzähne?
XML
<Animal> <legs>4</legs> <eyes>2</eyes> <horns>2</horns> <tail>1</tail> </Animal>
XPATH
boolean(/Animal/tusks)
AUSGABE
false
Hat das Tier Hörner?
XPATH
<Animal> <legs>4</legs> <eyes>2</eyes> <horns>2</horns> <tail>1</tail> </Animal>
https://riptutorial.com/de/home 16
XPATH
boolean(/Animal/horns)
AUSGABE
true
Gibt es Pflanzen im Haus?
XML
<House> <LivingRoom> <plant name="rose"/> </LivingRoom> <TerraceGarden> <plant name="passion fruit"/> <plant name="lily"/> <plant name="golden duranta"/> </TerraceGarden> </House>
XPATH
boolean(/House//plant)
AUSGABE
true
Prüfen Sie, ob ein Knoten vorhanden ist online lesen: https://riptutorial.com/de/xpath/topic/7432/prufen-sie--ob-ein-knoten-vorhanden-ist
https://riptutorial.com/de/home 17
Kapitel 9: Ruft Knoten relativ zum aktuellen Knoten ab
Syntax
Alle Vorfahren eines Knotens/ Pfad zum Knoten / Ancestor :: node ()•
1.
Ein bestimmter Vorfahr eines Knotens/ pfad zum knoten / ancestor :: ancestor_name•
2.
Elternteil eines Knotens/ Pfad zum Knoten / parent :: node ()•
3.
Folgende Geschwister eines Knotens/ Pfad zum Knoten / Folgendes Geschwister :: node ()•
4.
Ein bestimmtes Geschwister, das einem Knoten folgt/ Pfad zum Knoten / Folgendes-Geschwister :: Geschwistername•
5.
Vorgängergeschwister eines Knotens/ Pfad zum Knoten / Vorgänger-Geschwister :: node ()•
6.
Ein bestimmtes Geschwister vor einem Knoten/ Pfad zum Knoten / Vorgänger-Geschwister :: Geschwistername•
7.
Alle unmittelbar untergeordneten Knoten eines Knotens/ Pfad zum Knoten / child :: node ()•
8.
Ein bestimmter untergeordneter Knoten eines Knotens/ pfad zum knoten / child :: chid_name•
9.
Alle Nachkommen eines Knotens/ Pfad zum Knoten / Nachkomme :: node ()•
10.
Alle spezifischen Nachkommen eines Knotens/ Pfad zum Knoten / Nachkomme :: Nachkommen_Name•
11.
Parameter
Achse wählt aus
Vorfahr alle Ahnenknoten
Elternteil Elternknoten
Nachgeschwister Geschwister, die dem Knoten folgen
Vorgeschwister Geschwister vor dem Knoten
Kind unmittelbare Kinder
Nachkomme alle Nachkommen unabhängig von der Verschachtelungsebene
https://riptutorial.com/de/home 18
Bemerkungen
Diese Achsen können in Kombination mit anderen Funktionen verwendet werden, um unsere Anforderungen zu erfüllen.
Examples
Finde meine Vorfahren
XML
<GrandFather name="Bardock" gender="male" spouse="Gine"> <Dad name="Goku" gender="male" spouse="Chi Chi"> <Me name="Gohan" gender="male"/> <brother name="Goten" gender="male"/> </Dad> </GrandFather>
XPATH
//Me/ancestor::node()
AUSGABE
<GrandFather name="Bardock" gender="male" spouse="Gine"> <Dad name="Goku" gender="male" spouse="Chi Chi"> <Me name="Gohan" gender="male" /> <brother name="Goten" gender="male" /> </Dad> </GrandFather> <Dad name="Goku" gender="male" spouse="Chi Chi"> <Me name="Gohan" gender="male" /> <brother name="Goten" gender="male" /> </Dad>
Finde meine Eltern
XML
<GrandFather name="Bardock" gender="male" spouse="Gine"> <Dad name="Goku" gender="male" spouse="Chi Chi"> <Me name="Gohan" gender="male"/> <brother name="Goten" gender="male"/> </Dad> </GrandFather>
XPATH
//Me/ancestor::Dad
https://riptutorial.com/de/home 19
oder
//Me/parent::node()
AUSGABE
<Dad name="Goku" gender="male" spouse="Chi Chi"> <Me name="Gohan" gender="male" /> <brother name="Goten" gender="male" /> </Dad>
Finde meinen Großvater
XML
<GrandFather name="Bardock" gender="male" spouse="Gine"> <Dad name="Goku" gender="male" spouse="Chi Chi"> <Me name="Gohan" gender="male" /> <brother name="Goten" gender="male" /> </Dad> </GrandFather>
XPATH
//Me/ancestor::GrandFather
oder
//Me/parent::node()/parent::node()
AUSGABE
<GrandFather name="Bardock" gender="male" spouse="Gine"> <Dad name="Goku" gender="male" spouse="Chi Chi"> <Me name="Gohan" gender="male" /> <brother name="Goten" gender="male" /> </Dad> </GrandFather>
Finde meinen Bruder
XML
<GrandFather name="Bardock" gender="male" spouse="Gine"> <Dad name="Goku" gender="male" spouse="Chi Chi"> <brother name="Goten" gender="male" /> <Me name="Gohan" gender="male" /> <brother name="Goten" gender="male" /> </Dad> </GrandFather>
https://riptutorial.com/de/home 20
XPATH
//Me/following-sibling::brother
AUSGABE
<brother name="Goten" gender="male" />
Holen Sie sich alle Avatare vor Parashurama
XML
<Dashavatar> <Avatar name="Matsya"/> <Avatar name="Kurma"/> <Avatar name="Varaha"/> <Avatar name="Narasimha"/> <Avatar name="Vamana"/> <Avatar name="Balabhadra"/> <Avatar name="Parashurama"/> <Avatar name="Rama"/> <Avatar name="Krishna"/> <Avatar name="Kalki"/> </Dashavatar>
XPATH
//Avatar[@name='Parashurama']/preceding-sibling::node()
AUSGABE
<Avatar name="Matsya"/> <Avatar name="Kurma"/> <Avatar name="Varaha"/> <Avatar name="Narasimha"/> <Avatar name="Vamana"/> <Avatar name="Balabhadra"/>
Holen Sie sich alle Avatare nach Parashurama
XML
<Dashavatar> <Avatar name="Matsya"/> <Avatar name="Kurma"/> <Avatar name="Varaha"/> <Avatar name="Narasimha"/> <Avatar name="Vamana"/> <Avatar name="Balabhadra"/> <Avatar name="Parashurama"/> <Avatar name="Rama"/> <Avatar name="Krishna"/>
https://riptutorial.com/de/home 21
<Avatar name="Kalki"/> </Dashavatar>
XPATH
//Avatar[@name='Parashurama']/following-sibling::node()
AUSGABE
<Avatar name="Rama" /> <Avatar name="Krishna" /> <Avatar name="Kalki" />
Holen Sie sich alle Avatare außer dem aktuellen (Parusharama)
XML
<Dashavatar> <Avatar name="Matsya"/> <Avatar name="Kurma"/> <Avatar name="Varaha"/> <Avatar name="Narasimha"/> <Avatar name="Vamana"/> <Avatar name="Balabhadra"/> <Avatar name="Parashurama"/> <Avatar name="Rama"/> <Avatar name="Krishna"/> <Avatar name="Kalki"/> </Dashavatar>
XPATH
//Avatar[@name='Parashurama']/following-sibling::Avatar | //Avatar[@name='Parashurama']/preceding-sibling::Avatar
AUSGABE
<Avatar name="Matsya" /> <Avatar name="Kurma" /> <Avatar name="Varaha" /> <Avatar name="Narasimha" /> <Avatar name="Vamana" /> <Avatar name="Balabhadra" /> <Avatar name="Rama" /> <Avatar name="Krishna" /> <Avatar name="Kalki" />
Holen Sie sich alle Details (Kindknoten) von House
XML
https://riptutorial.com/de/home 22
<House> <Rooms>10</Rooms> <People>4</People> <TVs>4</TVs> <Floors>2</Floors> </House>
XPATH
/House/child::node()
AUSGABE
<Rooms>10</Rooms> <People>4</People> <TVs>4</TVs> <Floors>2</Floors>
Holen Sie sich alle Zimmer (unmittelbare Kinder namens Room) in House
XML
<House> <numRooms>4</numRooms> <Room name="living"/> <Room name="master bedroom"/> <Room name="kids' bedroom"/> <Room name="kitchen"/> </House>
XPATH
/House/child::Room
oder
/House/*[local-name()='Room']
AUSGABE
<Room name="living" /> <Room name="master bedroom" /> <Room name="kids' bedroom" /> <Room name="kitchen" />
Holen Sie sich alle Zimmer (unabhängig von der Position) in House
XML
<House>
https://riptutorial.com/de/home 23
<numRooms>4</numRooms> <Floor number="1"> <Room name="living"/> <Room name="kitchen"/> </Floor> <Floor number="2"> <Room name="master bedroom"/> <Room name="kids' bedroom"/> </Floor> </House>
XPATH
/House/descendant::Room
AUSGABE
<Room name="living" /> <Room name="kitchen" /> <Room name="master bedroom" /> <Room name="kids' bedroom" />
Ruft Knoten relativ zum aktuellen Knoten ab online lesen: https://riptutorial.com/de/xpath/topic/6495/ruft-knoten-relativ-zum-aktuellen-knoten-ab
https://riptutorial.com/de/home 24
Kapitel 10: Suchen Sie nach Knoten, die ein bestimmtes Attribut haben
Syntax
Innerhalb eines bestimmten Knotens/ Pfad zu / element [@attribute_name]•
1.
Überall im Dokument// * [@ attributname]•
2.
Innerhalb eines bestimmten Knotens mit einem bestimmten Wert/ Pfad zu / element [@ attributname = 'Suchwert']•/ Pfad zu / element [@ attributname = "Suchwert"]•
3.
Überall im Dokument mit einem gewissen Wert// * [@ attributname = 'Suchstring']•// * [@ attribute_name = "Suchstring"]•
4.
Parameter
Wähler Funktion
@attribute_name Es wählt den Attributwert für einen Knoten aus, sofern vorhanden
Bemerkungen
Mit [@attribute_name] können Knoten ausgewählt werden, deren Attribut unabhängig vom Wert ist.
Wir können alle Funktionen oder Kombinationen der Funktionen wie z. B. Beginnen mit und Kleinbuchstaben mit diesem Wahlschalter verwenden, um unsere Anforderungen zu erfüllen.
Examples
Suchen Sie nach Knoten mit einem bestimmten Attribut
XML
<Galaxy> <name>Milky Way</name> <CelestialObject name="Earth" type="planet"/> <CelestialObject name="Sun" type="star"/> </Galaxy>
XPATH
https://riptutorial.com/de/home 25
/Galaxy/*[@name]
oder
//*[@name]
AUSGABE
<CelestialObject name="Earth" type="planet" /> <CelestialObject name="Sun" type="star" />
Suchen Sie nach Knoten mit einem bestimmten Attributwert
XML
<Galaxy> <name>Milky Way</name> <CelestialObject name="Earth" type="planet"/> <CelestialObject name="Sun" type="star"/> </Galaxy>
XPATH
/Galaxy/*[@name='Sun']
oder
//*[@name='Sun']
AUSGABE
<CelestialObject name="Sun" type="star" />
Suchen Sie nach Knoten, indem Sie den Wert eines Attributs mit einem Teilstring vergleichen
XML
<Galaxy> <name>Milky Way</name> <CelestialObject name="Earth" type="planet"/> <CelestialObject name="Sun" type="star"/> </Galaxy>
XPATH
/Galaxy/*[contains(@name,'Ear')]
https://riptutorial.com/de/home 26
oder
//*[contains(@name,'Ear')]
Anstelle von einfachen Anführungszeichen können auch doppelte Anführungszeichen verwendet werden:
/Galaxy/*[contains(@name, "Ear")]
AUSGABE
<CelestialObject name="Earth" type="planet" />
Finden Sie Knoten durch Übereinstimmen der Teilzeichenfolge des Attributwerts (ohne Berücksichtigung von Groß- und Kleinschreibung)
XML
<Galaxy> <name>Milky Way</name> <CelestialObject name="Earth" type="planet"/> <CelestialObject name="Sun" type="star"/> </Galaxy>
XPATH
/Galaxy/*[contains(lower-case(@name),'ear')]
oder
//*[contains(lower-case(@name),'ear')]
oder mit dem String in Anführungszeichen:
//*[contains(lower-case(@name), "ear")]
AUSGABE
<CelestialObject name="Earth" type="planet" />
Suchen Sie nach Knoten, indem Sie einen Teilstring mit dem Anfang des Attributwerts angeben
XML
<Galaxy> <name>Milky Way</name>
https://riptutorial.com/de/home 27
<CelestialObject name="Earth" type="planet"/> <CelestialObject name="Sun" type="star"/> </Galaxy>
XPATH
/Galaxy/*[starts-with(lower-case(@name),'ear')]
oder
//*[starts-with(lower-case(@name),'ear')]
AUSGABE
<CelestialObject name="Earth" type="planet" />
Suchen Sie nach Knoten, indem Sie einen Teilstring verwenden, der mit dem Ende des Attributwerts übereinstimmt
XML
<Galaxy> <name>Milky Way</name> <CelestialObject name="Earth" type="planet"/> <CelestialObject name="Sun" type="star"/> </Galaxy>
XPATH
/Galaxy/*[ends-with(lower-case(@type),'tar')]
oder
//*[ends-with(lower-case(@type),'tar')]
AUSGABE
<CelestialObject name="Sun" type="star" />
Suchen Sie nach Knoten, die ein bestimmtes Attribut haben online lesen: https://riptutorial.com/de/xpath/topic/3096/suchen-sie-nach-knoten--die-ein-bestimmtes-attribut-haben
https://riptutorial.com/de/home 28
Kapitel 11: Wählen Sie Knoten aus, deren Namen einer Zeichenfolge entsprechen oder diese enthalten
Syntax
Innerhalb eines bestimmten Knotens:
{Pfad-zu-Elternteil} / name () = 'Suchstring']
1.
Überall im Dokument:
// * [name () = 'Suchstring']
2.
Parameter
Funktion Rückgabewert
Lokaler Name() Name des Knotens ohne Präfix
Bemerkungen
local-name () Ergebnis enthält kein Präfix (Suchname () XPATH-Funktion dafür)
Examples
Suchen Sie nach Knoten mit Namen als Licht, Gerät oder Sensor
XML
<Galaxy> <Light>sun</Light> <Device>satellite</Device> <Sensor>human</Sensor> <Name>Milky Way</Name> </Galaxy>
XPATH
/Galaxy/*[local-name()='Light' or local-name()='Device' or local-name()='Sensor']
oder
https://riptutorial.com/de/home 29
//*[local-name()='Light' or local-name()='Device' or local-name()='Sensor']
AUSGABE
<Light>sun</Light> <Device>satellite</Device> <Sensor>human</Sensor>
Suchen Sie nach Knoten, deren Name Light enthält
XML
<Data> <BioLight> <name>Firefly</name> <model>Insect</model> </BioLight> <ArtificialLight> <name>Fire</name> <model>Natural element</model> <source>flint</source> </ArtificialLight> <SolarLight> <name>Sun</name> <model>Star</model> <source>helium</source> </SolarLight> </Data>
XPATH
/Data/*[contains(local-name(),"Light")]
oder
//*[contains(local-name(),"Light")]
AUSGABE
<BioLight> <name>Firefly</name> <model>Insect</model> </BioLight> <ArtificialLight> <name>Fire</name> <model>Natural element</model> <source>flint</source> </ArtificialLight> <SolarLight> <name>Sun</name> <model>Star</model> <source>helium</source> </SolarLight>
https://riptutorial.com/de/home 30
Suchen Sie nach Knoten, deren Name mit Stern beginnt
XML
<College> <FootBall> <Members>20</Members> <Coach>Archie Theron</Coach> <Name>Wild cats</Name> <StarFootballer>David Perry</StarFootballer> </FootBall> <Academics> <Members>100</Members> <Teacher>Tim Jose</Teacher> <Class>VII</Class> <StarPerformer>Lindsay Rowen</StarPerformer> </Academics> </College>
XPATH
/College/*/*[starts-with(local-name(),"Star")]
oder
//*[starts-with(local-name(),"Star")]
AUSGABE
<StarFootballer>David Perry</StarFootballer> <StarPerformer>Lindsay Rowen</StarPerformer>
Suchen Sie nach Knoten, deren Name mit Ball endet
XML
<College> <FootBall> <Members>20</Members> <Coach>Archie Theron</Coach> <Name>Wild cats</Name> <StarPlayer>David Perry</StarPlayer> </FootBall> <VolleyBall> <Members>24</Members> <Coach>Tim Jose</Coach> <Name>Avengers</Name> <StarPlayer>Lindsay Rowen</StarPlayer> </VolleyBall> <FoosBall> <Members>22</Members> <Coach>Rahul Mehra</Coach> <Name>Playerz</Name> <StarPlayer>Amanda Ren</StarPlayer>
https://riptutorial.com/de/home 31
</FoosBall> </College>
XPATH
/College/*[ends-with(local-name(),"Ball")]
oder
//*[ends-with(local-name(),"Ball")]
AUSGABE
<FootBall> <Members>20</Members> <Coach>Archie Theron</Coach> <Name>Wild cats</Name> <StarPlayer>David Perry</StarPlayer> </FootBall> <VolleyBall> <Members>24</Members> <Coach>Tim Jose</Coach> <Name>Avengers</Name> <StarPlayer>Lindsay Rowen</StarPlayer> </VolleyBall> <FoosBall> <Members>22</Members> <Coach>Rahul Mehra</Coach> <Name>Playerz</Name> <StarPlayer>Amanda Ren</StarPlayer> </FoosBall>
Suche nach Knoten mit Namenslicht (Groß- und Kleinschreibung wird nicht berücksichtigt)
XML
<Galaxy> <Light>sun</Light> <Device>satellite</Device> <Sensor>human</Sensor> <Name>Milky Way</Name> </Galaxy>
XPATH
/Galaxy/*[lower-case(local-name())="light"]
oder
//*[lower-case(local-name())="light"]
https://riptutorial.com/de/home 32
AUSGABE
<Light>sun</Light>
Wählen Sie Knoten aus, deren Namen einer Zeichenfolge entsprechen oder diese enthalten online lesen: https://riptutorial.com/de/xpath/topic/3095/wahlen-sie-knoten-aus--deren-namen-einer-zeichenfolge-entsprechen-oder-diese-enthalten
https://riptutorial.com/de/home 33
Kapitel 12: Wählen Sie Knoten basierend auf ihren untergeordneten Elementen aus
Examples
Wählen Sie Knoten basierend auf der untergeordneten Anzahl aus
Beispiel-XML
<Students> <Student> <Name> <First>Ashley</First> <Last>Smith</Last> </Name> <Grades> <Exam1>A</Exam1> <Exam2>B</Exam2> <Final>A</Final> </Grades> </Student> <Student> <Name> <First>Bill</First> <Last>Edwards</Last> </Name> <Grades> <Exam1>A</Exam1> </Grades> </Student> </Students>
XPath
Wählen Sie alle Schüler aus, die mindestens zwei Noten aufgenommen haben
//Student[count(./Grades/*) > 1]
Ausgabe
<Student> <Name> <First>Ashley</First> <Last>Smith</Last> </Name> <Grades> <Exam1>A</Exam1> <Exam2>B</Exam2> <Final>A</Final> </Grades> </Student>
https://riptutorial.com/de/home 34
Wählen Sie Knoten basierend auf einem bestimmten untergeordneten Knoten aus
Beispiel-XML
<Students> <Student> <Name> <First>Ashley</First> <Last>Smith</Last> </Name> <Grades> <Exam1>A</Exam1> <Exam2>B</Exam2> <Final>A</Final> </Grades> </Student> <Student> <Name> <First>Bill</First> <Last>Edwards</Last> </Name> <Grades> <Exam1>A</Exam1> </Grades> </Student> </Students>
XPath
Wählen Sie alle Schüler aus, für die eine Prüfung für Exam2 aufgezeichnet wurde
//Student[./Grades/Exam2]
oder
//Student[.//Exam2]
Ausgabe
<Student> <Name> <First>Ashley</First> <Last>Smith</Last> </Name> <Grades> <Exam1>A</Exam1> <Exam2>B</Exam2> <Final>A</Final> </Grades> </Student>
Wählen Sie Knoten basierend auf ihren untergeordneten Elementen aus online lesen: https://riptutorial.com/de/xpath/topic/6504/wahlen-sie-knoten-basierend-auf-ihren-
https://riptutorial.com/de/home 35
untergeordneten-elementen-aus
https://riptutorial.com/de/home 36
Credits
S. No
Kapitel Contributors
1Erste Schritte mit xpath
Community, hielsnoppe, kjhughes, Vinay, Wolfgang Schindler
2Elemente suchen, die bestimmte Attribute enthalten
Keith Hall
3Elemente suchen, die bestimmten Text enthalten
Keith Hall
4Holen Sie sich die Anzahl der Knoten
suchitra nair
5 Namensräume 4444, Keith Hall
6Ortspfade und Achsen
nwellnhof
7Prüfen Sie, ob der Text eines Knotens leer ist
suchitra nair
8Prüfen Sie, ob ein Knoten vorhanden ist
suchitra nair
9Ruft Knoten relativ zum aktuellen Knoten ab
suchitra nair
10
Suchen Sie nach Knoten, die ein bestimmtes Attribut haben
Keith Hall, miken32, suchitra nair
11
Wählen Sie Knoten aus, deren Namen einer Zeichenfolge entsprechen oder diese enthalten
Dimitre Novatchev, suchitra nair
Wählen Sie Knoten 12 Matthew
https://riptutorial.com/de/home 37
basierend auf ihren untergeordneten Elementen aus
https://riptutorial.com/de/home 38