GELÖST: XML Deserialize - Fehler beim auslesen "InnerException = {"<test" xmlns=''> wurde nicht erwartet."}

  • VB.NET

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von at4germany.

    GELÖST: XML Deserialize - Fehler beim auslesen "InnerException = {"<test" xmlns=''> wurde nicht erwartet."}

    Hallo,
    folgendes Problem:
    Ich speichere meine Propertys in einer XML Datei ab. Dies geht automatisch mit einem Code-Snippet (siehe hier). Nun möchte ich diese XML-Datei zurück in ein Object laden durch dieses Snippet. Dabei erhalte ich jedoch jedesmal den o.g. Fehler ("InnerException = {"<test" xmlns=''> wurde nicht erwartet."}). Dieser Fehler bleibt aber auch bestehen, wenn ich die xmls-Zeile aus der XML-Datei lösche.
    Kann mir jemand sagen wodurch ich diesen Fehler erhalte?
    Danke schonmal,
    mfg

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „at4germany“ ()

    Ich hab zwar von XML weniger Ahnung als ne Amaise aber vielleicht kann dir ja Google helfen, ich hab da folgendes gefunden:

    Wenn Sie Dokumente, die von der Microsoft BizTalk Server 2006-Adapter für Microsoft Dynamics CRM 3.0 erstellt wurden verarbeiten, erhalten Sie eine Fehlermeldung etwa folgenden Inhalts angezeigt:
    SOAP-Anforderung ist fehlgeschlagen:
    Url:mmyservice/MSCRMServices/2006/crmservice.asmx
    Methodenname: Ausführen
    Antwort:
    <? Xml Version = "1.0" encoding = "Utf-8"? >
    <soap-Envelope: xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" >
    <soap:Body>
    <soap:Fault>
    <faultcode> Soap: Client </faultcode>
    <faultstring> Server konnte Anfrage.--> es ein Fehler in XML-Dokument (1, 945) ist nicht lesen.--> Bedingung für 'account.accountnumber'-Attribut: Argumente vom Typ 'System.String' erwartet, jedoch empfangen "System.Xml.XmlNode []".--> Bedingung für 'account.accountnumber'-Attribut: Argumente vom Typ 'System.String' erwartet, jedoch empfangen "System.Xml.XmlNode []". </faultstring>
    <details / >
    </soap:Fault>
    </soap:Body>
    </soap:Envelope>
    Dieses Problem tritt auf, selbst wenn die Dokumente gemäß der RetrieveMultipleRequest-Schema gültig sind.

    Quelle
    Hallo,
    die XML-Datei wird eigentlich nur für eine Klasse benutzt.
    Um Platz zu sparen: Die Klasse besteht nur aus solchen Propertys und aus den beiden Code-Snippets.

    VB.NET-Quellcode

    1. Dim lZeitAktiv As Boolean = False
    2. Public Property ZeitAktiv() As Boolean
    3. Get
    4. Return lZeitAktiv
    5. End Get
    6. Set(ByVal value As Boolean)
    7. lZeitAktiv = value
    8. End Set
    9. End Property


    und falls es weiter Hilft, das war mein XML-Laden aufruf:

    VB.NET-Quellcode

    1. Public Function Laden(ByVal pDatei As String) As Boolean
    2. Try
    3. Dim ltest As test = CType(XMLDeSerialize(Of Object)(pDatei), test)
    4. Debug.Assert(False)
    5. Catch ex As Exception
    6. Debug.Assert(False)
    7. End Try
    8. End Function


    lg

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „at4germany“ ()

    Naja die Codesnippets sind ziemlich allgemein ausgelegt und du weist ja was du Serialisieren willst, also ist der Code etwas Overhead.
    Weis jetzt nicht genau wieso das bei dir nicht funktioniert, aber guck mal ob es damit geht: (Meine Klasse heißt hier einfach mal "Test")

    VB.NET-Quellcode

    1. Public Sub XMLSerialize(Pfad as String,t as Test)
    2. Dim xs As New XmlSerializer(GetType(Test))
    3. Dim fs As New FileStream(Pfad, FileMode.OpenOrCreate)
    4. xs.Serialize(fs, t)
    5. fs.Close()
    6. End Sub
    7. Public Function XmlDeserialize(Pfad as String) as Test
    8. Dim xs as new XmlSerializer(GetType(Test))
    9. Dim fs as New FileStream(Pfad,FileMode.OpenOrCreate)
    10. Dim t as Test = xs.Deserialize(fs)
    11. fs.Close()
    12. Return t
    13. End Function


    Der Code ist jetzt ausm Kopf geschrieben könnte sein das kleine Fehler drin sind.
    Hallo,
    Danke für die Hilfe, der Fehler hat sich eben gelöst.

    Das Problem war folgendes, ich muss in dieser Zeile:

    VB.NET-Quellcode

    1. Dim ltest As test = CType(XMLDeSerialize(Of Object)(pDatei), test)


    anstatt "Of Object" "Of test" schreiben, dann klappts.
    lg