Unterdrückung von Nullwerten in der .NET XML-Serialisierung
Der standardmäßige .NET XML-Serializer enthält Nullwerte, die häufig mit „nil“-Attributen gekennzeichnet sind. Dies kann zu einer suboptimalen XML-Ausgabe führen. Dieser Artikel demonstriert Techniken zum sauberen Weglassen von Nullwerten aus Ihrem serialisierten XML.
Wir können das Attribut [XmlIgnore]
nutzen oder eine benutzerdefinierte Serialisierungslogik implementieren, um dies zu erreichen.
Methode 1: Verwendung des [XmlIgnore]
-Attributs
Der einfachste Ansatz ist die Verwendung des [XmlIgnore]
-Attributs. Dieses Attribut weist den Serialisierer an, die Eigenschaft während der Serialisierung vollständig zu ignorieren.
<code class="language-csharp">public class MyClass { [XmlIgnore] public int? MyNullableInt { get; set; } public int MyOtherInt { get; set; } }</code>
Hier wird MyNullableInt
unabhängig von seinem Wert aus dem XML ausgeschlossen.
Methode 2: Benutzerdefinierte Serialisierung mit ShouldSerialize
Für mehr Kontrolle erstellen Sie eine benutzerdefinierte ShouldSerialize
Methode. Diese Methode bestimmt, ob eine Eigenschaft basierend auf ihrem Wert serialisiert werden soll.
<code class="language-csharp">public class MyClass { private int? _myNullableInt; [XmlIgnore] public int? MyNullableInt { get => _myNullableInt; set => _myNullableInt = value; } public int MyOtherInt { get; set; } public bool ShouldSerializeMyNullableInt() { return _myNullableInt.HasValue; } }</code>
Die ShouldSerializeMyNullableInt
-Methode gibt true
nur zurück, wenn MyNullableInt
einen Wert enthält; andernfalls wird es im XML weggelassen. Dies ermöglicht eine detaillierte Kontrolle darüber, welche Nullwerte enthalten sind.
Mit einer dieser Methoden können Sie Nullwerte während der .NET-XML-Serialisierung effektiv verwalten, was zu einer saubereren und individuelleren XML-Ausgabe führt.
Das obige ist der detaillierte Inhalt vonWie kann ich Nullwerte in der .NET XML-Serialisierung ausblenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!