2011-07-29 38 views
5

Quiero extraer texto fuera de las etiquetas. Por ejemplo,cómo extraer texto fuera de las etiquetas xml

<body> 
    This is an exmaple 
    <p> 
     blablabla 
    </p> 
    <references> 
     refer 1 
     refer 2 
    </references> 
</body> 

Quiero conseguir el texto "Este es un ejemplo" sólo sin texto en otras etiquetas (p) o de referencia. Intenté varios métodos pero no funciona. Any1 puede ayudar? Muchas gracias.

Respuesta

8

Debe pensar un texto dentro de una etiqueta como un nodo. Un nodo de texto se recupera utilizando el nodo de prueba text(). Ejemplo. Teniendo en cuenta:

<body> 
    This is an exmaple 
    <p> 
    blablabla 
    <\p> 
    <references> 
     refer 1 
     refer 2 
    <\references> 
    another example 
<\body> 

XPath:

"/body/text()" 

recuperará todos los nodos de texto hijos de body, como "Este es un exmaple" y "otro ejemplo", mientras que:

"/body/text()[1]" 

se recupera solo el primero, "Esto es un exmaple". Si desea que todos los nodos de texto descendientes que puede utilizar:

"/body//text()" 

o, desea que todos los nodos de texto dentro de la primera p:

"/body/p[1]//text()" 
+0

se puede hacer esto mediante C# XmlDocument o xmlreader? Intento leer el texto y escribir el texto en otro xml para indexarlo. –

+0

Claro que primero necesita usar XPath en el documento xml con algún método como SelectNodes o SelectSingleNode (no lo use desde hace un año al menos). –

2

Utilice este XPath: /body/text(). Seleccionará This is an exmaple.

Cuestiones relacionadas