SoloCodigo

CLR: .Net / Mono / Boo / Otros CLR => C# => Mensaje iniciado por: alexisgondola en Viernes 3 de Agosto de 2012, 17:57

Título: extraer valor especifico de una cadena
Publicado por: alexisgondola en Viernes 3 de Agosto de 2012, 17:57
Buenos dias que tal, estoy intentando obtener el valor de un xml

que viene con la siguiente estructura

<?xml version='1.0' encoding='UTF-8'?>
<errors>
        <error>error x.</error>
</errors>


el xml lo pase a un strin de la siguiente forma

 string obtenerXml;


             { using (WebResponse response = e.Response)
                {
                    HttpWebResponse httpResponse = (HttpWebResponse)response;
                 
                 
                   using (Stream data = response.GetResponseStream())
                   {
                      obtenerXml= new StreamReader(data).ReadToEnd();
                                     
                    }
                }
            }

lo que tengo que obtener es el texto que esta dentro de
<error>error x.</error>

seria obtener : error x.


intente realizar esto, asi puedo estraer el mensaje pero es colocandole un punto fijo de donde termina, pero el problema es que el mensaje puede variar de tamaño:

 string result;

result =   obtenerXml.Substring(54, 100);


como puedo obtener el numero de donde encuentro en la cadena este valor "<"

para poder colocarlo en el substring

o de que otra forma poder capturar los caracteres que estan entre
<error>error x.</error>
Título: Re:extraer valor especifico de una cadena
Publicado por: ProfesorX en Viernes 3 de Agosto de 2012, 19:59
Hola alexisgondola.

¿Para que inventar el hilo negro si ya tenemos un namespace llamado System.Xml, que nos permite trabajar y manipular directamente archivos XML?

Te dejo un ejemplo de como hacerlo, suponiendo que tienes un archivo XML llamado Ejemplo.xml que contiene:

Código: [Seleccionar]
<?xml version='1.0' encoding='UTF-8'?>
<errors>
  <error>error x.</error>
  <error>error y.</error>
</errors>

Este programa te dara como salida
error x.
error y.

Código: [Seleccionar]
using System;
using System.Xml;

namespace ConsoleApplication1
{
    public class Program
    {
        public static XmlDocument doc;
        public static XmlTextReader reader;
        public static XmlNodeList listaNodos;

        static void Main(string[] args)
        {
            doc = new XmlDocument();
            reader = new XmlTextReader("Ejemplo.xml");
            doc.Load(reader);
            listaNodos = doc.GetElementsByTagName("error");
            for (int i = 0; i < listaNodos.Count; i++)
            {
                Console.WriteLine(listaNodos[i].InnerXml);
            } 
        }
    }
}

Saludos :)