Ich habe folgende xml:Probleme mit Deserialisieren xml Objektstruktur C#
<Root>
<ProcessingUnit>Lifestyle</ProcessingUnit>
<ProcessingData>
<ProcessType>Product</ProcessType>
<ProcessAction>Create</ProcessAction>
<Id>7</Id>
</ProcessingData>
</Root>
und ich habe die folgende Objektstruktur
[XmlRoot("Root")]
public class XmlRoot
{
ProcessingUnit ProcessingUnit { get; set; }
[XmlElement("ProcessingData")]
ProcessingData ProcessingData { get; set; }
}
public class ProcessingData
{
public ProcessType ProcessType { get; set; }
public ProcessAction ProcessAction { get; set; }
public int Id { get; set; }
}
Wenn ich deserialisieren i wie folgt vor:
XmlSerializer _serializer = new XmlSerializer(typeof(XmlRoot));
using (var reader = new StringReader(stringtest))
{
var tradeData = (XmlRoot)_serializer.Deserialize(reader);
}
Deserialisierung zu Enums funktioniert einwandfrei, die processingUnit wird korrekt deserialisiert, aber die Eigenschaft ProcessingData
ist null
.
Ich habe versucht, mit vielen verschiedenen XML-Attribute zu dekorieren, aber ich kann nicht sehen, warum ich den Nullwert bekomme.
EDIT: Die stringtest Variable hat den Wert:
var stringtest =
"<Root><ProcessingUnit>Lifestyle</ProcessingUnit><ProcessingData><ProcessType>Product</ProcessType><ProcessAction>Create</ProcessAction><Id>7</Id></ProcessingData></Root>";
Die Aufzählungen wie folgt aussieht:
public enum ProcessType
{
[XmlEnum(Name = "Product")]
Product,
[XmlEnum(Name = "Category")]
Category,
}
public enum ProcessAction
{
[XmlEnum(Name = "Create")]
Create,
[XmlEnum(Name = "Delete")]
Delete,
[XmlEnum(Name = "Update")]
Update,
}
public enum ProcessingUnit
{
[XmlEnum(Name = "LifeStyle")]
LifeStyle
}
Sind Sie sicher, Dein 'stringtest' enthält das eigentliche xml? Ich kann keine Fehler in dem von Ihnen bereitgestellten Code sehen. – HimBromBeere
Die Serialisierung benötigt parameterlose Konstruktoren für die Objekte, die serialisiert/deserialisiert werden. Sind Sie sicher, dass ProcessingAction und ProcessingType diese bereitstellen? – Jonas
Thansk für die Antwort, Siehe Bearbeiten :) – Diemauerdk