2009-06-03 10 views
0

Gibt es eine Möglichkeit, eine XPath-Abfrage zu erstellen, die einen Knoten an einer bestimmten Position UND mit einem bestimmten Attributwert findet?XPath-Abfrage, die Knotenposition und Attributwert berücksichtigt

Betrachten Sie das folgende Beispiel xml:

<Item Type="Book"> 
<!--1st Param node in a Book item is always the autors last name--> 
<Param Value="Updike" /> 
<!--2nd Param node in a Book item is always the autors first name--> 
<Param Value="John" /> 
<!--3rd Param node in a Book item is always the book title--> 
<Param Value="Toward the End of Time" /></Item> 

Jetzt kann ich eine einzelne Abfrage zu erstellen, die Folgendes findet:

Suche alle Artikel Knoten Typ „Buch“, wo der zweite Param Knoten hat eine Wert von "John". Also ich würde gerne alle Bücher finden, in denen der Name des Autors lautet "John".

Beachten Sie, dass ich .NET XPathDocument verwende.

Antwort

2

Beachten Sie, dass ich .NET XPathDocument verwende.

So begrenzt auf XPath V1.

Sie können (relative und absolute) Pfade in einem Prädikat einschließen. So etwas wie:

//Item[@Type='Book'][./Param[2][@Value = 'John']] 

(. Ich würde versuchen zu vermeiden „//“, wie es eine Suche des gesamten DOM erfordert, aber eine bessere Achse ohne mehr Kontext nicht zur Verfügung stellen kann)

+0

Ihr Ausdruck ist auf Bücher beschränkt. –

+0

@Ben: Jetzt behoben. – Richard

0

Der Ausdruck wäre:

//Item/Param[2][@Value='John'] 
5

Was ist mit der Anforderung, nur die Artikel, die Bücher sind?

Versuchen Sie folgendes:

/Item[@Type='Book'][Param[2][@Value='John']] 
Verwandte Themen