Visual CSharp .NET - obtener cadena hasta un caracter especifico

 
Vista:
sin imagen de perfil

obtener cadena hasta un caracter especifico

Publicado por alexis (59 intervenciones) el 03/08/2012 17:46:28
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 = extraido.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>
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

obtener cadena hasta un caracter especifico

Publicado por Roger (12 intervenciones) el 08/08/2012 04:02:48
Se me ocurren dos formas, una con expresiones regulares, y otra con una consulta al XML

Expresiones regulares (con using System.Text.RegularExpressions)

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

MatchCollection match = Regex.Matches(xmlRespuesta, "<error>.+</error>"); //seguro habrá una expresion regular para obtener solo el texto, y no los tags XML, no soy muy entendido en expresiones regulares, jejeje

foreach (Match singleMatch in match)
{
Console.WriteLine(singleMatch.Value.Replace("<error>", string.Empty).Replace("</error>", string.Empty));
}

Consulta al XML (con using System.Xml)

XmlDocument documento = new XmlDocument();
documento.LoadXml(xmlRespuesta);
XmlNodeList nodosError = documento.SelectNodes("*/error");
foreach (XmlNode nodo in nodosError)
{
Console.WriteLine(nodo.Value);
}

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

obtener cadena hasta un caracter especifico

Publicado por alexis (59 intervenciones) el 08/08/2012 15:51:21
gracias varon me fue de gran ayuda, pronto estare colocando todas las consultas con respuestas en mi blog de desarrollo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

obtener cadena hasta un caracter especifico

Publicado por alexis (59 intervenciones) el 16/08/2012 23:29:17
buenas tardes que tal,
realice este ejemplo y funciono

using System.Xml

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

XmlDocument documento = new XmlDocument();
documento.LoadXml(xmlRespuesta);
XmlNodeList nodosError = documento.SelectNodes("*/error");
foreach (XmlNode nodo in nodosError)
{
Console.WriteLine(nodo.InnerText);
}


pude extraer el contenido del nodo error


realice otro ejemplo con este caso, pero no me extrae la informacion que esta en el nodo status
pense que solo con colocar el nombre del nodo se podia extrar la informacion, disculpe la ignorancia


using System.Xml

string xmlRespuesta = <?xml version="1.0" encoding="UTF-8"?>
<ejemplo xmlns="http://www.prueba.com">
<status>valor estado</status>
</ejemplo>";



XmlDocument documento = new XmlDocument();
documento.LoadXml(xmlRespuesta);
XmlNodeList nodosError = documento.SelectNodes("*/status");

foreach (XmlNode nodo in nodosError)
{
Console.WriteLine(nodo.InnerText);
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

obtener cadena hasta un caracter especifico

Publicado por roger (12 intervenciones) el 17/08/2012 14:07:43
es por el xmlns que le tienes, con quitarlo ya te hace la consulta XPath normalmente. Necesitas ese xmlns? porque aqui se trata el tema http://stackoverflow.com/questions/443250/creating-a-specific-xml-document-using-namespaces-in-c-sharp

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

obtener cadena hasta un caracter especifico

Publicado por alexis (59 intervenciones) el 17/08/2012 21:26:20
que tal varon gracias ya ahora si estoy mas claro
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar