Heim >Backend-Entwicklung >C++ >Wie kann ich verhindern, dass bei der .NET-XML-Serialisierung Nullwerte angezeigt werden?
Beseitigen von Nullwerten während der .NET XML-Serialisierung
Das Standardverhalten von .NETs XmlSerializer
umfasst Nullwerte in der serialisierten XML-Ausgabe. Dies kann oft unerwünscht sein. Lassen Sie uns untersuchen, wie Sie dies verhindern können. Betrachten Sie den folgenden XML-Code, der aus einer Beispielklasse generiert wurde:
<code class="language-xml"><?xml version="1.0" encoding="utf-8"?><myclass><mynullableint p2:nil="true" xmlns:p2="http://www.w3.org/2001/XMLSchema-instance"></mynullableint><myotherint>-1</myotherint></myclass></code>
Beachten Sie, dass mynullableint
, eine nullbare Ganzzahl, die auf null
gesetzt ist, immer noch im XML vorhanden ist. Die Lösung liegt in der Verwendung des ShouldSerialize
-Musters.
Um eine Null-MyNullableInt
-Eigenschaft auszuschließen, implementieren Sie diese Methode in Ihrer Klasse:
<code class="language-csharp">public bool ShouldSerializeMyNullableInt() { return MyNullableInt.HasValue; }</code>
Diese Methode steuert die Serialisierung bedingt. Es gibt true
nur zurück, wenn MyNullableInt
einen Wert enthält, wodurch dessen Aufnahme in das XML sichergestellt wird. Andernfalls wird false
zurückgegeben, wodurch das Element effektiv unterdrückt wird.
Hier ist ein vollständiges Beispiel:
<code class="language-csharp">public class Person { public string Name { get; set; } public int? Age { get; set; } public bool ShouldSerializeAge() { return Age.HasValue; } }</code>
Mit dieser ShouldSerializeAge
-Methode erzeugt der folgende Code XML ohne das Age
-Element, da es null ist:
<code class="language-csharp">Person thePerson = new Person() { Name = "Chris" }; XmlSerializer xs = new XmlSerializer(typeof(Person)); StringWriter sw = new StringWriter(); xs.Serialize(sw, thePerson);</code>
Resultierendes XML:
<code class="language-xml"><person xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><name>Chris</name></person></code>
Das obige ist der detaillierte Inhalt vonWie kann ich verhindern, dass bei der .NET-XML-Serialisierung Nullwerte angezeigt werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!