Kann ich bei Verwendung eines standardmäßigen .NET Xml-Serializers alle Nullwerte ausblenden? Das Folgende ist ein Beispiel für die Ausgabe meiner Klasse. Ich möchte die nullbaren Ganzzahlen nicht ausgeben, wenn sie auf null gesetzt sind.
Aktuelle XML-Ausgabe:
<?xml version="1.0" encoding="utf-8"?>
<myClass>
<myNullableInt p2:nil="true" xmlns:p2="http://www.w3.org/2001/XMLSchema-instance" />
<myOtherInt>-1</myOtherInt>
</myClass>
Was ich möchte:
<?xml version="1.0" encoding="utf-8"?>
<myClass>
<myOtherInt>-1</myOtherInt>
</myClass>
c#
.net
xml-serialization
Guru Meditation
quelle
quelle
Zusätzlich zu dem, was Chris Taylor geschrieben hat: Wenn Sie etwas als Attribut serialisiert haben, können Sie eine Eigenschaft in Ihrer Klasse benennen, um
{PropertyName}Specified
zu steuern, ob es serialisiert werden soll. In Code:quelle
{PropertyName}Specified
Attribute müssen vom Typ bool sein.Es existiert eine Eigenschaft namens
XmlElementAttribute.IsNullable
Wenn die IsNullable-Eigenschaft auf true festgelegt ist, wird das Attribut xsi: nil für Klassenmitglieder generiert, die auf eine Nullreferenz festgelegt wurden.
Das folgende Beispiel zeigt ein Feld, auf das
XmlElementAttribute
das Feld angewendet wurde, und die IsNullable-Eigenschaft ist auf false gesetzt.Sie können nach anderen suchen,
XmlElementAttribute
um Namen in der Serialisierung usw. zu ändern.quelle
Sie können einige Standardwerte definieren und verhindern, dass die Felder serialisiert werden.
quelle
Ich bevorzuge es, meine eigene XML ohne automatisch generierte Tags zu erstellen. In diesem Fall kann ich das Erstellen der Knoten mit Nullwerten ignorieren:
quelle
quelle
In meinem Fall waren die nullbaren Variablen / Elemente alle vom Typ String. Also habe ich einfach eine Prüfung durchgeführt und ihnen einen String zugewiesen. Leer bei NULL. Auf diese Weise habe ich die unnötigen Attribute nil und xmlns entfernt (p3: nil = "true" xmlns: p3 = "http://www.w3.org/2001/XMLSchema-instance)
quelle