2012-04-07 6 views
29

Betrachten Sie das folgende, sehr vereinfachte Beispiel.Finde Geschwisterknoten, nachdem der angegebene Knoten gefunden wurde

<n></n> 
<k></k> 
<m></m> 
<k></k> 

Wie kann ich für ein erstes k Geschwister nach m Knoten gesucht? Suchen Sie im Prinzip einen Knoten und fahren Sie dann mit der Suche von diesem Knoten fort.

+1

Warum ist die Antwort von @Neil und seinen Kommentaren verschwunden? –

Antwort

57

Wie kann ich für ein erstes k Geschwister nach m Knoten gesucht? Suchen Sie im Prinzip nach Knoten und suchen Sie dann weiter von diesem Knoten.

Unter der Annahme, dass wir die folgenden wohlgeformte XML-Dokument haben:

<t> 
    <n></n> 
    <k></k> 
    <m></m> 
    <k></k> 
</t> 

dann wird die folgende XPath-Ausdruck:

/*/m[1]/following-sibling::k[1] 

wählt den ersten k folgenden Geschwister der ersten m Kind des obersten Elements des XML-Dokuments.

+0

Zu kompliziert. –

+0

Eigentlich wollte ich gestern meine Downvote entfernen, aber die Seite sagte mir, dass es nach 24 Minuten zu spät war. So ist das Leben. –

4

nette Frage: versuchen Sie es ........

<a> 
<n></n> 
<k></k> 
<m></m> 
<k></k> <==== 
<k></k> 
<m></m> 
<k></k> 
</a> 


    /a/k[. = preceding::m][1] 
+0

Diese Antwort ist interessant, aber sie beginnt mit ** dem ersten "m" mit einem "k" nach dem **, nicht von ** dem aktuellen Knoten **. –

+0

Ist das 'previous :: m'-Bit auch eine Rückreferenz? Wäre das nicht weniger leistungsfähig als eine Lösung, die zuerst nach "m" sucht? (Weiß nicht) – jpaugh

Verwandte Themen