2012-10-01 145 views
19

Im tratando de deserializar la respuesta de this simple web servicexmlns = ''> no se esperaba. - Hay un error en el documento XML (2, 2)

Im usando el siguiente código:

WebRequest request = WebRequest.Create("http://inb374.jelastic.tsukaeru.net:8080/VodafoneDB/webresources/vodafone/04111111");  
WebResponse ws = request.GetResponse(); 
XmlSerializer s = new XmlSerializer(typeof(string)); 
string reponse = (string)s.Deserialize(ws.GetResponseStream()); 
+0

Lo que sucedió conmigo cuando recibí este error fue que estaba serializando muchos objetos en el mismo archivo por separado, luego tratando de deserializar dicho archivo xml a una lista, lo que solucionó era simplemente eliminar la porción xmlns del archivo xml, creando un lista personalizada, luego serializando solo esa lista, luego deserialicé el archivo xml a la lista personalizada. Sé que esto no tiene nada que ver contigo, pero lo dejaré aquí porque ese fue el problema con el que me encontré que me hizo ver esta pregunta en primer lugar, así que tal vez ayude a otra persona. –

Respuesta

48

Declarar XmlSerializer como

XmlSerializer s = new XmlSerializer(typeof(string),new XmlRootAttribute("response")); 

es suficiente.

+1

¡Gracias, muuuuuuucho! – user1384603

+1

FYI L.B tiene razón, leve variación si hay un nodo padre sin embargo. En el xml estoy deserializando el nodo primario es que lanzaba la excepción " Joe

+0

recompensa 500 en su camino a su compañero. Gracias. –

10

¿Quieres deserializar el XML y tratarlo como un fragmento.

Hay una solución muy directa disponible here. He modificado para su escenario:

var webRequest = WebRequest.Create("http://inb374.jelastic.tsukaeru.net:8080/VodafoneDB/webresources/vodafone/04111111"); 

using (var webResponse = webRequest.GetResponse()) 
using (var responseStream = webResponse.GetResponseStream()) 
{ 
    var rootAttribute = new XmlRootAttribute(); 
    rootAttribute.ElementName = "response"; 
    rootAttribute.IsNullable = true; 

    var xmlSerializer = new XmlSerializer(typeof (string), rootAttribute); 
    var response = (string) xmlSerializer.Deserialize(responseStream); 
} 
+0

Gracias por su tiempo. Encontré al usuario L.B respuesta muy simple y útil. – user1384603

+0

@ user1384603 Sin problemas. –

Cuestiones relacionadas