2010-02-22 42 views
5

tengo dicho contenido del archivo html:
expresión XPath para seleccionar texto de enlace

<a class="bf" title="Link to book" href="/book/229920/">book name</a>

me ayudan a construir la expresión XPath para obtener texto del enlace (nombre del libro). Intento usar /a, pero la expresión se evalúa sin resultados.

Respuesta

2

Ha intentado

//a 

?

más específica es mejor:

//a[@class='bf' and starts-with(@href, '/book/')] 

Tenga en cuenta que esto selecciona el elemento<a>. En su entorno de host es fácil extraer el valor de texto de ese nodo a través de los métodos DOM estándar (como la propiedad .textContent).

Para seleccionar el nodo de texto real, consulte las otras respuestas en este hilo.

+0

¡Tu respuesta me ayudó más, pero sin el parámetro start-with! – alex

+0

@alex: Se suponía que era un ejemplo de "más específico es mejor". ;) – Tomalak

11

Si el contexto es todo el documento, probablemente debería usar // en lugar de /. También es posible que (no estoy seguro de eso) necesite bajar un nivel más para recuperar el texto.

creo que debería tener este aspecto

//a/text() 

EDIT: Como Tomalak señaló que es text() no text

+1

No existe el elemento '' en ''. Quiere decir '// a/text()'. – Tomalak

3

Depende también del resto de su documento. Si usa // al principio, se devolverán todos los nodos coincidentes, lo que podría ser demasiados resultados en caso de que tenga otros enlaces en su documento.

Aparte de eso, una posible expresión xpath es //a/text().

El /a que ha intentado solo devuelve el a -etrícula, si es el elemento raíz. Para obtener el texto del enlace, debe agregar la parte /text().

Cuestiones relacionadas