Xpath, um nur direkte Geschwister mit übereinstimmenden Attributen auszuwählen

8

Ich habe das folgende Beispieldokument:

%Vor%

Ich suche nach einem xpath-Ausdruck, der alle direkten Geschwister eines bestimmten Knotens mit übereinstimmenden Klassenattributen auswählt, keine Geschwister. Im obigen Beispiel sollten die ersten zwei <p class="b"> A-B ausgewählt werden; ebenso die zwei <p class="a"> C-D, ebenso die fünfte Single <p class="b"> E, da sie keine direkten Geschwister hat; ebenso die einzelne <p class="b"> F innerhalb von <x> . Beachten Sie, dass B und C in diesem Kontext keine direkten Geschwister sind, da sie ein anderes Klassenattribut haben!

Was ich habe ist das:

%Vor%

Der letzte Ausdruck wählt auch das fünfte Geschwister aus, obwohl dazwischen nicht passende Geschwister sind.

Wie wähle ich nur direkte Geschwister mit dem gleichen class -Wert?

Bearbeiten Zur Verdeutlichung: Beachten Sie, dass es sich bei den letzten beiden um einzelne Auswahlen und nicht um Geschwister handelt!

Bearbeiten Ich habe hier ein Beispiel hier gespeichert. Der Xpath-Ausdruck basierend auf /root/p[1] soll A, B, C, D auswählen.

    
Jens 18.10.2013, 19:20
quelle

2 Antworten

13

Um das nächste nächste Geschwister zu erhalten, können Sie die Position - 1 Bedeutung direkt neben hinzufügen.

%Vor%

Um sicherzustellen, dass das nächste Geschwister einen bestimmten Knotentyp hat, können Sie den folgenden Filter hinzufügen, wobei p der Knotentyp ist, mit dem wir übereinstimmen möchten.

%Vor%

Wenn Sie nur solche mit demselben Attribut möchten, müssen Sie auch das Attribut für das erste p-Element angeben.

Wenn Sie also nur Elemente der Klasse b p wollen, die sich unmittelbar hinter einem Element der Klasse b p befinden, können Sie Folgendes tun. Dies würde Ihnen nur das zweite p-Element geben.

%Vor%

Es klingt, als ob Sie tatsächlich ein Element der Klasse b wollen, das an ein anderes Element der Klasse b angrenzt. In diesem Fall können Sie das folgende und das vorherige Geschwister überprüfen. Das Folgende würde Ihnen die ersten 2 p Elemente geben.

%Vor%     
Justin Ko 18.10.2013 20:31
quelle
1

Wie wäre es mit so etwas:

%Vor%

Es gibt alle folgenden Geschwister zurück, die @class='b' sind und sie selbst haben folgende Geschwister mit @class='a' . Obwohl es nicht für die letzte <p> funktionieren würde, da es keine folgenden Geschwister hat.

    
rokras 17.07.2015 11:05
quelle

Tags und Links