c#
  • xml
  • exception
  • xml-serialization
  • 2009-03-23 11 views 7 likes 
    7

    Im deserialisieren versuchen, eine XML-Datei mit XmlSerializer Deserialisieren, aber im, diese Ausnahme erhalten:Ausnahme beim Versuch, eine XML-Datei

    „Es ist ein Fehler in XML-Dokument (1, 2)“ Die Innerexception ist: "<Mymessage xmlns='http://MyMessages/'> wurde nicht erwartet."

    Dies ist die erste Zeile in der XML-Datei. Ich vermute, dass es etwas mit den xmlns zu tun hat.

    Ich habe versucht, Google zu fragen, und dann versucht, die folgende Zeile in meinem Code

    [XmlRoot("MyMessage", Namespace="'http://MyMessages/")] 
    

    Aber ich bekomme immer noch die gleiche Ausnahme hinzuzufügen.

    +0

    Sie den entsprechenden Teil der XML-Datei teilen konnte bitte? –

    +0

    Dies ist eine alte Frage, aber es ist wichtig zu wissen, dass derselbe Fehler erzeugt werden kann, weil eine Klasse ein Serializable-Attribut fehlt. –

    Antwort

    8

    Im Konstruktor des XmlSerializer i benötigt, um einen Standard-Namespace festlegen, nach tun, dass alles funktionierte gut

    +5

    Können Sie einen Codebeispiel geben, wie Sie das gelöst haben? Ich denke, ich habe das gleiche Problem, aber die Angabe des Standardnamespace macht keinen Unterschied. – Jon

    3

    Bitte geben Sie den vollständigen XML-Dateicode an, um das Problem besser zu verstehen.

    setzen diese auch als die erste Zeile in der XML-Datei und sehen, ob das Problem

    <?xml version="1.0" encoding="utf-8"?> 
    
    +0

    Ich würde dringend empfehlen, "utf-8" anstelle von iso-8859-1 für alle interoperable Web-Service-Arbeit zu verwenden! –

    1

    Es löst klingt wie Sie eine borked XML-Datei haben. Einfache Möglichkeiten, um herauszufinden:

    • versuchen, es in einen XML-Viewer Laden
    • oder einfach nur sicherstellen, dass es eine Erweiterung .xml und Last in VS oder IE
    • oder laufen xsd.exe darüber
    • hat

    Wenn sie sich beschweren, dann ist das XML sicherlich beschädigt. Wenn sie funktionieren und Ihre Daten anzeigen, dann haben Sie wahrscheinlich die Serialisierungsattribute falsch. Versuchen Sie, mit den „/ classes“ Schaltern xsd.exe, um zu sehen, was es mit ihm tun würde ...

    2

    Zusätzlich zu CruelIO Antwort, beschloß ich, den Fehler durch Zugabe:

    [XmlRoot("RenderResult", Namespace = "http://mynamespace.uri.org")] 
    

    zu der Klasse, die ich zu deserialisieren versuchte. z: die Serialisierungscode war:

    RenderResult result; 
    using (var memoryStream = new MemoryStream(data)) 
    { 
        var xmlSerializer = new XmlSerializer(typeof(RenderResult)); 
        result = (RenderResult)xmlSerializer.Deserialize(memoryStream); 
    } 
    

    und meine Klasse sah wie folgt aus:

    [XmlRoot("RenderResult", Namespace = "http://mynamespace.uri.org")] 
    public class RenderResult 
    { 
    } 
    

     Verwandte Themen

    • Keine verwandten Themen^_^