2010-12-15 17 views
33

Ho un div elemet:Xpath - ottenere solo contenuto del nodo senza altri elementi

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

Cosa un'espressione XPath devo usare per ottenere solo i contenuti div senza i suoi elementi figlio h1 e div

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

Qualcosa del genere? Non riesco a capirlo

+0

fa // div/text() non funziona? – OrangeDog

+0

Buona domanda, +1. Vedi la mia risposta per tre espressioni XPath che probabilmente ti forniscono il non definito "contenuto" dell'elemento 'div'. –

risposta

46

Per ottenere il valore di stringa di div uso:

string(/div) 

Questa è la concatenazione di tutti i nodi di testo che sono discendenti della (in alto) div elemento.

Per selezionare tutti i discendenti del nodo di testo di div uso:

/div//text() 

per ottenere solo i nodi di testo che sono figli diretti di div uso:

/div/text() 
+0

Risposta perfetta. –

5

Cosa XPath espressione dovrei usare per ottenere solo il div contenuti senza i suoi elementi figlio h1 e div

Questa espressione XPath:

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

Si seleziona i figli di ogni elemento radice div ad eccezione di quelle h1 o div elementi.

2

espressione come ./text() recupera solo il contenuto dell'elemento principale.

saluti, Nitin

Problemi correlati