Czy istnieje lepszy sposób uzyskiwania węzła nadrzędnego wyniku zapytania XPath?
Mając takie znaczniki:
<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>
Jestem zainteresowany zdobyciem wszystkiego<a>
isome text
TYLKO jeśli przylegająspan
jest klasya1
. Tak więc na końcu całego kodu powinienem być<a>
od pierwszegodiv
isome text
od trzeciego. Byłoby łatwo, gdyby<a>
isome text
były w środkuspan
lubdiv
byłobyclass
atrybut, ale nie ma szczęścia.
Teraz szukam tego, co robięspan
za1
klasa:
//div[contains(@class,'foo')]/div/span[contains(@class,'a1')]
potem dostaję jego rodzica i robię innyquery()
z tym rodzicem jako węzłem kontekstu. To po prostu nie jest skuteczne, więc jasne jest, czy istnieje lepszy sposób na osiągnięcie mojego celu?
DODATEK ODPOWIEDZI
Jak w @MarcBzaakceptowana odpowiedź, właściwym zapytaniem do użycia jest:
//div[contains(@class,'foo')]/div/span[contains(@class,'a1')]/..
ale dla<a>
może być lepiej użyć:
//div[contains(@class,'foo')]/div/span[contains(@class,'a1')]/../a
dostać<a>
zamiast jego pojemnika.