2012-02-15 16 views
9

Come faccio a recuperare il testo all'interno dell'articolo-campo1?recupera il contenuto di xpath dal div id

<title>Testing</title> 
    <link>http://example.org</link> 
    <description>Description</description> 
    <language>en-us</language> 
    <lastBuildDate>Mon, 13 Feb 2012 00:00:00 +0000</lastBuildDate> 

    <item> 
    <title>Title Here</title> 
    <link>http://example.org/2012/03/27/</link> 
    <description><![CDATA[ 
     <div id="article-field1"><a href="http://example.org/test1">Test 1</a></div> 
     <div id="article-field2">123</div> 
    <pubDate>Tue, 2 Mar 2012 00:00:00 +0000</pubDate> 
    </item> 

ho provato ad usare

//description/div[@id="article-field1"]/text() 

Qualsiasi consiglio?

Grazie

+3

È stato pubblicato un XML non valido (' penartur

+1

Non riesco a vedere dove finisce la sezione CDATA. Ci dovrebbero essere due parentesi di chiusura. In effetti, nel campione mancano alcuni tag di chiusura per la seconda descrizione. È solo malformato. Per favore Correggi. – ingyhere

+0

@shadow: il miglior consiglio è quello di rimuovere '

risposta

2

Non si può farlo con una singola chiamata di processore XPath plain-vanilla.

si hanno due scelte:

  1. utilizza un processore specifica XPath che implementa la funzione dyn:evaluate():; (e questo pone la domanda Cosa processore e la versione stai usando?) OR
  2. Utilizzare due chiamate. Il primo go ottiene il valore di testo del nodo/title/item/description. Il secondo, dopo aver caricato il risultato del primo come nuovo documento XML (con alcune tweek per convertire il frammento xml in un documento xml corretto), è div [@ id = "article-field1"].
+0

Nota: il contenuto del nodo titolo/articolo/descrizione è puro carattere, non XML, per cui "// description/div [@ id =" article-field1 "]/text()" non funziona. –

2
//description/div[@id="article-field1"]/a/text() 

Se il CDATA tag valido viene rimosso, viene aggiunto un elemento principale e l'etichetta corrispondente 'descrizione' è chiuso. Ciò presuppone un errore di incollare parzialmente l'XML originale, che è tutto ciò che ha senso data l'espressione. Fondamentalmente, la query originale mancava l'elemento a.

Questo può essere verificato a http://www.xpathtester.com/.

Problemi correlati