2 Stimmen

C# xml serializer - Kann eine temporäre Klasse nicht erzeugen

Ich versuche, eine xml zu einer Klasse mit dem folgenden Weg zu serialisieren:

XmlSerializer ser = new XmlSerializer(typeof(PSW5ns.PSW5));
StringReader stringReader;
stringReader = new StringReader(response_xml);
XmlTextReader xmlReader;
xmlReader = new XmlTextReader(stringReader);
PSW5ns.PSW5 obj;
obj = (PSW5ns.PSW5)ser.Deserialize(xmlReader);
xmlReader.Close();
stringReader.Close();

Die Klasse PSW5 wird automatisch von xsd.exe anhand einer mir zur Verfügung gestellten PSW5.xsd-Datei erzeugt. Ich habe das Gleiche für andere Klassen getan und es funktioniert. Jetzt bekomme ich folgenden Fehler (während der Laufzeit):

{"Unable to generate a temporary class (result=1).\r\nerror CS0030: 
Cannot convert type 'PSW5ns.TAX_INF[]' to 'PSW5ns.TAX_INF'\r\nerror CS0029: 
Cannot implicitly convert type 'PSW5ns.TAX_INF' to 'PSW5ns.TAX_INF[]'\r\n"}

Ich bin verwirrt, weil es bei anderen Klassen auf die gleiche Weise funktioniert. Ich würde mich über jeden Vorschlag freuen. Vielen Dank im Voraus, Giorgos

2voto

Radoslav Hristov Punkte 974

Es scheint zu sein andere verwandte Themen auf SO. Offenbar können Sie das Problem durch manuelles Bearbeiten der Ausgabedatei lösen.

1voto

Oded Punkte 475566

Schauen Sie sich die xsd und die Klasse an - eine von beiden definiert eine TAX_INF Objekt, das andere definiert ein TAX_INF[] Array oder Sammlung.

Das Problem, das Sie sehen, ist, dass der Serialisierer nicht von einem einzelnen Objekt in eine Sammlung übersetzen kann.

Um das Problem zu beheben, stellen Sie sicher, dass xsd und Klasse übereinstimmen.

0voto

Codesleuth Punkte 10123

Es sieht so aus, als würden Sie aus einer XML-Datei laden, die ein einzelnes Elementmitglied definiert (das ein PSW5ns.TAX_INF ) mit demselben Namen wie ein Array-Mitglied Ihrer Klasse (das eine PSW5ns.TAX_INF[] Array).
Sind Sie sicher, dass Sie diesen bestimmten Zustand der Klasse in das XML-Dokument serialisiert haben, aus dem Sie laden? Wenn Sie die Klasse geändert haben und versuchen, einen alten Zustand zu laden, der nicht mit dem aktuellen Schema übereinstimmt, können Fehler wie die folgenden auftreten.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X