XPath mit mehreren Bedingungen


156

Mit welchem ​​XPath kann ich eine Kategorie mit einem angegebenen Namensattribut und einen untergeordneten Knotenautor mit dem angegebenen Wert auswählen?

Ich habe verschiedene Variationen des folgenden Pfades ohne Erfolg ausprobiert:

//quotes/category[@name='Sport' and author="James Small"]

Das XML:

<?xml version="1.0" encoding="utf-8"?>
<quotes>
  <category name="Sport">
   <author>James Small<quote date="09/02/1985">Quote One</quote><quote             date="11/02/1925">Quote nine</quote></author>
  </category>
   <category name="Music">
   <author>Stephen Swann
 <quote date="04/08/1972">Quote eleven</quote></author>
  </category>
  </quotes>

Antworten:


248

Versuchen:
//category[@name='Sport' and ./author/text()='James Small']


4
Für Follower bedeutete die Fehlermeldung "Erwartet], aber gefunden: &&" "Verwenden Sie das Schlüsselwort und anstelle von &&" (wie in dieser Antwort angegeben)
Rogerdpack

31

Verwendung :

/category[@name='Sport' and author/text()[1]='James Small']

oder verwenden:

/category[@name='Sport' and author[starts-with(.,'James Small')]]

Es ist eine gute Regel, zu versuchen, die Verwendung des //Pseudooperators nach Möglichkeit zu vermeiden , da seine Auswertung normalerweise sehr langsam sein kann.

Ebenfalls:

./somename

ist äquivalent zu:

somename

Daher wird empfohlen, letzteres zu verwenden.


14

Die Frage ist nicht klar, aber was ich verstehe, ist, dass Sie eine Kategorie auswählen müssen, die ein Namensattribut hat und einen untergeordneten Autor mit einem angegebenen Wert haben sollte. Korrigieren Sie mich, wenn ich abgenutzt bin

Hier ist ein xpath

//category[@name='Required value'][./author[contains(.,'Required value')]]
e.g
//category[@name='Sport'][./author[contains(.,'James Small')]]

1

Sie können mehrere Bedingungen in xpath mit und, oder anwenden

//input[@class='_2zrpKA _1dBPDZ' and @type='text']

//input[@class='_2zrpKA _1dBPDZ' or @type='text']

-1

Hier können wir auch so vorgehen:

//category [@name='category name']/author[contains(text(),'authorname')]

ODER

//category [@name='category name']//author[contains(text(),'authorname')]

Um XPATH im Detail zu lernen, besuchen Sie bitte Selen xpath im Detail

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.