Laden...

[erledigt] Deserialisierung schlägt fehl (xmlns=... wurde nicht erwartet)

Erstellt von UNeverNo vor 9 Jahren Letzter Beitrag vor 9 Jahren 10.136 Views
UNeverNo Themenstarter:in
153 Beiträge seit 2007
vor 9 Jahren
[erledigt] Deserialisierung schlägt fehl (xmlns=... wurde nicht erwartet)

Ich habe eine wsdl als Service Referenz eingebunden. Mir wird automatisch eine Klassenstruktur erzeugt, die ungefähr so aussieht:

    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.18408")]
    [System.SerializableAttribute()]
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.ComponentModel.DesignerCategoryAttribute("code")]
    [System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true, Namespace="http://www.xoev.de/schemata/xkfz/1_1")]
    public partial class xkfzNachrichten : TypeXKfzNachrichten {
    }

    [System.Xml.Serialization.XmlIncludeAttribute(typeof(TypeXKfzFehlernachrichten))]
    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.18408")]
    [System.SerializableAttribute()]
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.ComponentModel.DesignerCategoryAttribute("code")]
    [System.Xml.Serialization.XmlTypeAttribute(TypeName="Type.XKfzNachrichten", Namespace="http://www.xoev.de/schemata/xkfz/1_1")]
    public partial class TypeXKfzNachrichten : object, System.ComponentModel.INotifyPropertyChanged {
                
        private vorsystemantrag0707 vorsystemantrag0707Field;        
        private auskunftanfragehalterauskunft0801 auskunftanfragehalterauskunft0801Field;
        
        /// <remarks/>
        [System.Xml.Serialization.XmlElementAttribute("vorsystem.antrag.0707", Order=29)]
        public vorsystemantrag0707 vorsystemantrag0707 {
            get {
                return this.vorsystemantrag0707Field;
            }
            set {
                this.vorsystemantrag0707Field = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlElementAttribute("auskunft.anfragehalterauskunft.0801", Order=30)]
        public auskunftanfragehalterauskunft0801 auskunftanfragehalterauskunft0801 {
            get {
                return this.auskunftanfragehalterauskunft0801Field;
            }
            set {
                this.auskunftanfragehalterauskunft0801Field = value;
            }
        }       
    }

Ich habe folgende XML-Datei die ich in ein Objekt deserialisieren möchte (die Validierung gegen XSD ist fehlerfrei):

<?xml version="1.0" encoding="utf-8"?>
<_1:xkfzNachrichten xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:_1="http://www.xoev.de/schemata/xkfz/1_1" xmlns:elem="http://www.kba.de/elemente" xmlns:aus="http://www.kba.de/zfzr/auskunft" xmlns:mit="http://www.kba.de/eVB/mitteilung" xsi:schemaLocation="http://www.xoev.de/schemata/xkfz/1_1 D:\XOEV_Produktionsumgebung_XKfz_1_1_1\XKfz\build\xsd\xkfz-kommunikation.xsd">
	<_1:vorsystem.antrag.0707>
           ...
	</_1:vorsystem.antrag.0707>
</_1:xkfzNachrichten>
        public static xkfzNachrichten GetNachricht()
        {
            xkfzNachrichten nachricht = new xkfzNachrichten();
            XmlSerializer serializer = new XmlSerializer(typeof(xkfzNachrichten));
            using (StreamReader reader = new StreamReader(@"c:\2.xml"))
            {
                xkfzNachrichten x = (xkfzNachrichten)serializer.Deserialize(reader);
            }

            return nachricht;
        }

Allerdings bekomme ich folgende Fehlermeldung:

ex.GetBaseException()
{"<xkfzNachrichten xmlns='http://www.xoev.de/schemata/xkfz/1_1'> wurde nicht erwartet."}
    [System.InvalidOperationException]: {"<xkfzNachrichten xmlns='http://www.xoev.de/schemata/xkfz/1_1'> wurde nicht erwartet."}
    Data: {System.Collections.ListDictionaryInternal}
    HelpLink: null
    InnerException: null
    Message: "<xkfzNachrichten xmlns='http://www.xoev.de/schemata/xkfz/1_1'> wurde nicht erwartet."
    Source: "pnlhqhoh"
    StackTrace: "   bei Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderxkfzNachrichten.Read321_xkfzNachrichten()"
    TargetSite: {System.Object Read321_xkfzNachrichten()}

Was mache ich falsch?

Grüße,
Chris

"Wenn Architekten genauso bauen würden, wie Programmierer programmieren, dann würde der erste Specht, der vorbeikommt, die Zivilisation zerstören." (Steven Weinberg)

771 Beiträge seit 2009
vor 9 Jahren

Hi,

probiere mal den Namespace mit dem XmlSerializer Constructor (Type, String) anzugeben.

UNeverNo Themenstarter:in
153 Beiträge seit 2007
vor 9 Jahren

Manchmal kann es so einfach sein. Obwohl ich nicht ganz verstehe wieso er den Namespace nicht anhand der Reference.cs erkennt.

Vielen! Dank!

Grüße,
Chris

"Wenn Architekten genauso bauen würden, wie Programmierer programmieren, dann würde der erste Specht, der vorbeikommt, die Zivilisation zerstören." (Steven Weinberg)