¿Hay una mejor manera de obtener el nodo primario del resultado de la consulta XPath?
Tener un marcado como este:
<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>
Estoy interesado en conseguir todo<a>
ysome text
SOLAMENTE si es adyacentespan
es de clasea1
. Así que al final de todo el código mi resultado debería ser<a>
desde el primerdiv
ysome text
desde el tercero. Seria facil si<a>
ysome text
estaban dentrospan
odiv
tendríaclass
Atributo, pero sin suerte.
Lo que estoy haciendo ahora es buscarspan
cona1
clase:
//div[contains(@class,'foo')]/div/span[contains(@class,'a1')]
Entonces consigo su padre y hago otra.query()
con ese padre como nodo de contexto. Esto simplemente parece estar lejos de ser eficiente, por lo que la pregunta es si existe una mejor manera de lograr mi objetivo.
LA ADENDA A LA RESPUESTA
Según @MarcBrespuesta aceptada, la consulta correcta a usar es:
//div[contains(@class,'foo')]/div/span[contains(@class,'a1')]/..
pero para<a>
puede ser mejor usar:
//div[contains(@class,'foo')]/div/span[contains(@class,'a1')]/../a
el obtener el<a>
en lugar de su contenedor.