Gibt es eine bessere Möglichkeit, den übergeordneten Knoten des XPath-Abfrageergebnisses abzurufen?
Markup wie folgt haben:
<div class="foo">
<div><span class="a1"></span><a href="...">...</a></div>
<div><span class="a2"></span><a href="...">...</a></div>
<div><span class="a1"></span>some text</div>
<div><span class="a3"></span>some text</div>
</div>
Ich bin daran interessiert, alles zu bekommen<a>
undsome text
NUR wenn benachbartspan
ist von klassea1
. Also am Ende des gesamten Codes sollte mein Ergebnis sein<a>
von zuerstdiv
undsome text
ab dem dritten. Es wäre einfach, wenn<a>
undsome text
waren drinnenspan
oderdiv
hätteclass
Attribut, aber kein Glück.
Was ich jetzt mache, ist suchenspan
mita1
Klasse:
//div[contains(@class,'foo')]/div/span[contains(@class,'a1')]
dann hole ich mir seine Eltern und mache eine anderequery()
mit diesem Elternteil als Kontextknoten. Das sieht einfach alles andere als effizient aus. Die Frage ist also eindeutig, ob es einen besseren Weg gibt, mein Ziel zu erreichen.
DAS ANTWORT-ADDENDUM
Gemäß @MarcBakzeptierte Antwortist die richtige Abfrage:
//div[contains(@class,'foo')]/div/span[contains(@class,'a1')]/..
aber für<a>
es könnte besser sein:
//div[contains(@class,'foo')]/div/span[contains(@class,'a1')]/../a
die bekommen die<a>
anstelle seines Behälters.