Ich habe eine XSD, die ich verwendet habe, um meine Klasse zu erstellen. Wenn ich die XML-Ausgabe bekomme, werden alle meine Datetime-Datentypen nicht serialisiert. Ich bekomme keine Fehler beim Serialisieren. Ich habe das ShipDate für die Proben verwendet. Ich weiß nicht, ob das Schema-Tool einige Eigenschaften hinzufügt, die den Prozess beeinflussen. Zum Beispiel ShipDateSpecified mit XMLIgnoreAttribute.C# Serialisierung nicht serialisieren Datentyp Datetime, nur Strings
Dank im Voraus
C#
shipHdr.TradingPartnerId = "000ALLTESTID";
shipHdr.ShipmentIdentification = "321654987";
shipHdr.ShipDate = Convert.ToDateTime("2016-03-23");
shipHdr.CarrierProNumber = "895934589485948353";
shipHdr.AppointmentNumber = "24601";
Versand Klasse
private System.DateTime shipDateField;
private bool shipDateFieldSpecified;
/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute(DataType="date")]
public System.DateTime ShipDate {
get {
return this.shipDateField;
}
set {
this.shipDateField = value;
}
}
/// <remarks/>
[System.Xml.Serialization.XmlIgnoreAttribute()]
public bool ShipDateSpecified {
get {
return this.shipDateFieldSpecified;
}
set {
this.shipDateFieldSpecified = value;
}
}
XML-Ausgabe
<ShipmentHeader>
<TradingPartnerId>000ALLTESTID</TradingPartnerId>
<ShipmentIdentification>321654987</ShipmentIdentification>
<CarrierProNumber>895934589485948353</CarrierProNumber>
<AppointmentNumber>24601</AppointmentNumber>
</ShipmentHeader>
Für die entsprechende Dokumentation finden Sie unter [XmlSerializer Klasse: Generierte XML-Controlling] (https://msdn.microsoft.com/en-us/library/system.xml.serialization.xmlserializer.aspx) und suchen Sie nach * propertyNameSpecified *. – dbc
danke vor allem, nur neugierig, ist das ein normales Verhalten, Überprüfung der Angegeben ??? –
daniel2078
Dies ist das Standardverhalten von 'XmlSerializer', aber es verunreinigt die Klasse meiner Meinung nach. Es würde schöner aussehen, wenn der Typ "DateTime?" Zulässig wäre, aber Sie brauchen immer noch eine Möglichkeit, dem Serializer mitzuteilen, ob er einen "null" -Wert schreiben oder das Element als Ganzes weglassen soll. –