2012-06-05 12 views

Respuesta

30

Con xpath, lo último que se devuelve es la última cosa en la ruta que no es una condición. ¿Qué significa? Bueno, las condiciones son el material entre [] (pero usted ya lo sabía) y el suyo se lee como pathElement [que tiene un atributo 'clase' con el valor 'mi clase']. hElement viene directamente antes del [.

Todo el material fuera de [] 's es entonces la trayectoria, por lo que en //a/b/c[@blah='bleh']/dun, b, c y d son todos los elementos de trayecto, bla es un atributo y bleh un valor literal. Si esta ruta coincide, le devolverá un d, la última condición de no condición.

Su ruta particular devuelve una (serie de) div, siendo lo último en la ruta de su xpath. Este valor de retorno incluye los nodos de nivel superior, div en su caso, y debajo de ellos (todos) sus (sus) hijos. Los nodos pueden ser elementos o texto (o comentarios, instrucciones de procesamiento, ...).

Debajo de un nodo puede haber múltiples nodos de texto, por lo tanto, la matriz pOcHa habla. x/text() devuelve todo el texto que es un hijo directo de x, x/node() devuelve todos los nodos secundarios, incluyendo texto.

Espero que esto ayude.

37
node() = innerXml 

text() = innerText 

tanto son matrices, por lo que el texto () [1] es un primer nodo de texto secundario ...

+0

¿Cómo múltiples nodos de texto verá como en XML? ¿Text() devolverá una concatenación de todos los internalTexts que los hijos del nodo seleccionado? – CoDEmanX

+1

@CoDEmanX: '

text1text2text3
' como dije, es un ** arreglo **, entonces 'div/node() [0] == div/text() [0] == text1' nodo, y' div/node() [1] == span' node, y 'div/node() [2] == div/text() [1] == text3' node - tendrías que concatenarlos tú mismo (a mano o con una función auxiliar que acepta una matriz). –

0

Usted puede intentar

// div [@ class = 'miclase']/child :: *

child :: * selecciona todos los elementos hijos del nodo de contexto see details

2

nueva respuesta a una vieja pregunta, las preguntas más frecuentes:

Para este XML

<div class="myclass">content</div> 

puede utilizar XPath para seleccionar sólo content en una de dos maneras:

  1. Selección Nodo de texto

    Este XPath,

    //div[@class='myclass']/text() 
    

    seleccionará los elementos del nodo de texto del elemento div segmentado, content, según lo solicitado.

  2. cadena valor de un elemento

    Este XPath,

    string(//div[@class='myclass']) 
    

    regresará string-value del div elemento apuntado, content, de nuevo a lo solicitado.

    Más información: Aquí hay una note explicar los cuerda valores de elementos:

    El string-value de un nodo elemento es la concatenación de los string-value s de todo nodo de texto descendants del elemento nodo en orden de documento.

Cuestiones relacionadas