2012-06-05 22 views

risposta

30

Con xpath, la cosa che verrà restituita è l'ultima cosa nel percorso che non è una condizione. Che cosa significa? Bene, le condizioni sono le cose tra [] (ma lo sapevi già) e il tuo legge come pathElement [che ha un attributo 'class' con valore 'la mia classe']. hElement arriva direttamente prima dello [.

Tutto il materiale esterno del [] 's allora è il percorso, quindi in //a/b/c[@blah='bleh']/dun, b, c e d sono tutti gli elementi di percorso, bla è un attributo e bleh un valore letterale. Se questo percorso corrisponde ti restituirà un d, l'ultima cosa non condizionata.

Il tuo percorso particolare restituisce una (serie di) div, è l'ultima cosa nel percorso del tuo xpath. Questo valore di ritorno include quindi il/i nodo/i di livello superiore, div nel tuo caso e al di sotto di essi tutti i suoi figli. I nodi possono essere elementi o testo (o commenti, istruzioni di elaborazione, ...).

Sotto un nodo possono esserci più nodi di testo, da cui parla l'array pOcHa. x/text() restituisce tutto il testo figlio diretto di x, x/node() restituisce tutti i nodi figlio, incluso il testo.

Spero che questo aiuti.

37
node() = innerXml 

text() = innerText 

entrambi sono array, così il testo ([1] è un primo nodo di testo per bambini ...

+0

Come apparirebbero più nodi di testo in XML? Text() restituirà una concatenazione di tutti i innerTexts di un figlio del nodo selezionato? – CoDEmanX

+1

@CoDEmanX: '

text1text2text3
' come ho detto, è un ** array **, quindi 'div/node() [0] == div/text() [0] == text1' nodo e' div/node() [1] == span' node e 'div/node() [2] == div/text() [1] == text3' node - dovresti concatenarli da soli (a mano o con una funzione di supporto che accetta un array). –

0

Si può provare

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

bambino :: * seleziona tutti gli elementi figli del nodo di contesto see details

2

nuova risposta a un vecchio, domanda frequente:

Per questo XML

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

è possibile utilizzare XPath per selezionare solo content in uno dei due modi:

  1. nodo di testo Selezione

    Questo XPath,

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

    selezionerà il nodo di testo figlio dell'elemento target div, content, come richiesto.

  2. String valore di un elemento

    Questo XPath,

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

    tornerà string-value della mirato div elemento, content, ancora una volta come richiesto.

    altre informazioni: Ecco un note spiegare i stringa valori di elementi:

    Il string-value di un nodo elemento è la concatenazione dei string-value s di tutti i nodi testo descendants dell'elemento nodo nell'ordine del documento.

Problemi correlati