Есть ли лучший способ получить родительский узел результата запроса XPath?
Имея разметку вот так:
<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>
Я заинтересован в получении всего<a>
а такжеsome text
ТОЛЬКО если рядомspan
имеет классa1
, Таким образом, в конце всего кода мой результат должен быть<a>
с первогоdiv
а такжеsome text
с третьего. Было бы легко, если<a>
а такжеsome text
были внутриspan
или жеdiv
будет иметьclass
атрибут, но не удача.
То, что я делаю сейчас, это искатьspan
с участиемa1
класс:
//div[contains(@class,'foo')]/div/span[contains(@class,'a1')]
тогда я получаю своего родителя и делаю другоеquery()
с этим родителем в качестве узла контекста. Это выглядит просто неэффективно, поэтому ясно, что есть ли лучший способ достичь моей цели?
ОТВЕТ НА ДОБАВЛЕНИЕ
Согласно @MarcBпринятый ответправильный запрос:
//div[contains(@class,'foo')]/div/span[contains(@class,'a1')]/..
но для<a>
может быть лучше использовать:
//div[contains(@class,'foo')]/div/span[contains(@class,'a1')]/../a
получить<a>
вместо его контейнера.