2012-02-15 17 views
9

¿Cómo recupero el texto dentro de article-field1?recuperar el contenido de xpath de 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> 

He intentado utilizar

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

Algún consejo?

Gracias

+3

Ha publicado un XML mal formado (' penartur

+1

No puedo ver dónde termina su sección CDATA. Debería haber dos corchetes de cierre. De hecho, a la muestra le faltan algunas etiquetas de cierre para la segunda descripción. Está mal formado. Por favor corrige. – ingyhere

+0

@shadow: El mejor consejo es eliminar el '

Respuesta

2

no se puede hacer con una sola llamada del procesador XPath llano-vainilla.

tiene dos opciones:

  1. utiliza un procesador XPath específica que implementa la función dyn:evaluate():; (y esto lleva a la pregunta ¿Qué procesador y versión está usando?) O
  2. Use dos llamadas. El primero obtiene el valor de texto del nodo/título/elemento/descripción. El segundo, después de cargar el resultado del primero como un nuevo documento XML (con unas pocas tweeks para convertir el fragmento xml en un documento xml apropiado), es div [@ id = "article-field1"].
+0

Nota: El contenido del nodo título/elemento/descripción es puro carácter de datos, no XML, es por eso que "// description/div [@ id =" article-field1 "]/text()" no funciona. –

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

Si se retira la etiqueta CDATA mal formado, se añade un elemento raíz y la etiqueta correspondiente 'Descripción' está cerrada. Esto supone un error de pegar parcialmente el XML original, que es todo lo que tiene sentido dada la expresión. Básicamente, a la consulta original le faltaba el elemento a.

Esto se puede verificar en http://www.xpathtester.com/.

Cuestiones relacionadas