首頁 >後端開發 >C++ >使用 .NET Xml 序列化程式時​​如何抑制空值?

使用 .NET Xml 序列化程式時​​如何抑制空值?

Linda Hamilton
Linda Hamilton原創
2025-01-12 08:26:42900瀏覽

How Can I Suppress Null Values When Using the .NET Xml Serializer?

.NET XML 序列化:處理空值

標準 .NET XML Serializer 預設包含 null 值。 若要排除這些,請使用 ShouldSerialize 模式。此模式可讓您定義是否應序列化屬性。

對於每個需要空值抑制的屬性,建立一個名為 ShouldSerialize{PropertyName} 的方法。 例如,可為 null 的整數屬性 MyNullableInt 需要此方法:

<code class="language-csharp">public bool ShouldSerializeMyNullableInt()
{
  return MyNullableInt.HasValue;
}</code>

如果 true 有值,則此方法傳回 MyNullableInt,從而觸發序列化。 否則,它會傳回 false,防止空值的序列化。

這是一個示範這一點的範例類別:

<code class="language-csharp">public class Person
{
  public string Name { get; set; }
  public int? Age { get; set; }
  public bool ShouldSerializeAge()
  {
    return Age.HasValue;
  }
}</code>

序列化實例:

<code class="language-csharp">Person person = new Person { Name = "Chris" };
XmlSerializer xs = new XmlSerializer(typeof(Person));
StringWriter sw = new StringWriter();
xs.Serialize(sw, person);</code>

產生的 XML 省略了 Age 元素,因為它的值為空:

<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>

使用自訂 ShouldSerialize 方法可以對序列化進行精細控制,從而可以選擇性地省略空值,從而獲得更簡潔、更有效的 XML 輸出。

以上是使用 .NET Xml 序列化程式時​​如何抑制空值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn