2010-12-15 9 views
33

Tengo una div elemet:Xpath - obtener sólo el contenido del nodo sin otros elementos de

<div> 
    This is some text 
    <h1>This is a title</h1> 
    <div>Some other content</div> 
</div> 

¿Qué expresión XPath se debe utilizar para conseguir solamente el contenido div sin sus elementos secundarios h1 y div

//div[not(h1)&not(div)]

¿Algo así? No puedo averiguarlo

+0

¿El // div/texto() no funciona? – OrangeDog

+0

Buena pregunta, +1. Vea mi respuesta para tres expresiones XPath que probablemente le proporcionen el "contenido" no definido por usted del elemento 'div '. –

Respuesta

46

Para obtener el valor de la cadena de div uso:

string(/div) 

Esta es la concatenación de todos los nodos de texto que son descendientes de la (parte superior) div elemento.

Para seleccionar todos los descendientes del nodo de texto de div uso:

/div//text() 

para obtener sólo los nodos de texto que son hijos directos de div uso:

/div/text() 
+0

Respuesta perfecta. –

5

Lo XPath expresión debería usar a solo obtener el div contenidos sin sus elementos niño h1 y div

Esta expresión XPath:

/div/node()[not(self::h1|self::div)] 

selecciona niños cada div del elemento raíz, excepto aquellos h1 o div elementos.

2

expresión como ./text() solo recuperará el contenido del elemento raíz.

Saludos, Nitin

Cuestiones relacionadas