2009-04-06 12 views
1

Gegeben ein Stück Xml wie das folgende. Wie würde ich eine XPATH-Abfrage schreiben, um den Wert des untergeordneten 'leaf2' zu erhalten, wo der 'Schlüssel' Wert bestimmte Werte hat (zB 2)Gewusst wie: XML-Kindknoten suchen

Ich arbeite in C# .NET. Im Moment suche ich nur den Xpath nach Schlüssel mit SelectNodes, finde den richtigen Wert und navigiere dann zurück zu leaf2.

<root> 
    <child> 
     <anotherChild> 
      <key>1</key> 
     </anotherChild> 
     <leaf1>X</leaf1> 
     <leaf2>Y</leaf2> 
     <leaf3></leaf3> 
    </child> 
    <child> 
     <anotherChild> 
      <key>2</key> 
     </anotherChild> 
     <leaf1>A</leaf1> 
     <leaf2>B</leaf2> 
     <leaf3></leaf3> 
    </child> 
</root> 

Antwort

8

Sie wollen:

/root/child[anotherChild/key = '2']/leaf2 

Dies sagt: „Elemente leaf2 Namen erhalten, deren Eltern ist child und deren Großeltern ist root, wo child durch sein Kind anotherChild mit einem Kind namens gefiltert wird genannt key, deren Wert 2 ist. "

+0

Sollte es nicht key = sein ‚2‘? – Naveen

+0

richtig, richtig. Slipped meinen Kopf. – Welbog

2

Oder vielleicht ein bisschen mehr flexibel, weil es nicht der Großvater übernimmt ist root

//child/anotherChild/key[text()="2"]/../../leaf2 

„finden, den Schlüssel mit Text 2, Eltern anotherChild und grandparentchild, gehen Sie zu Großeltern (dh Kind und finden leaf2"

+0

kann dies auch arbeiten. ich habe versucht, es noch nicht. – TygerKrash

+0

tun soll. ich habe es getestet in SketchPath gegen deine XML (also nicht wirklich in C#) –

+0

Also, wer hat das niedergeschrieben, und würde es Ihnen etwas ausmachen zu sagen, warum? –

Verwandte Themen