2012-10-01 6 views
19

Im Versuch, die Antwort von this simple web servicexmlns = ''> wurde nicht erwartet. - Es ist ein Fehler in XML-Dokument (2, 2)

Im mit dem folgenden Code deserialisieren:

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

Was mit mir passiert ist, als ich diesen Fehler bekam, war, dass ich viele Objekte in derselben Datei separat serialisierte und dann versuchte, diese XML-Datei zu einer Liste zu deserialisieren, was nur den xmlns-Teil der XML-Datei löschte benutzerdefinierte Liste, dann Serialisierung nur diese Liste, dann deserialisierte ich die XML-Datei in die benutzerdefinierte Liste. Ich weiß, das hat nichts mit dir zu tun, aber ich werde es hier belassen, weil das Problem, dem ich begegnet bin, mich dazu veranlasst hat, diese Frage überhaupt zu betrachten, vielleicht wird es jemand anderem helfen. –

Antwort

48

Deklarieren XmlSerializer als

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

genug ist.

+1

Danke soooooooo viel! – user1384603

+1

FYI L.B ist richtig, leichte Variation, wenn es einen Parent-Knoten gibt. In dem XML, das ich serialisiere, ist der Elternknoten , der die Ausnahme ausgelöst hat " Joe

+0

500 Bounty auf dem Weg zu Ihnen Mate. Danke. –

10

Sie wollen die XML deserialisiert und behandelt es als ein Fragment.

Es ist eine sehr einfache Problemumgehung verfügbar here. Ich habe es geändert für Ihr Szenario:

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

Danke für Ihre Zeit. Ich fand Benutzer L.B Antwort sehr einfach und nützlich. – user1384603

+0

@ user1384603 Keine Probleme. –

Verwandte Themen