Heim > Backend-Entwicklung > C++ > Wie kann ich verhindern, dass bei der .NET-XML-Serialisierung Nullwerte angezeigt werden?

Wie kann ich verhindern, dass bei der .NET-XML-Serialisierung Nullwerte angezeigt werden?

Barbara Streisand
Freigeben: 2025-01-12 06:13:47
Original
860 Leute haben es durchsucht

How Can I Prevent Null Values from Appearing in .NET XML Serialization?

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage