首頁 >後端開發 >C++ >如何防止 .NET XML 序列化出現空值?

如何防止 .NET XML 序列化出現空值?

Barbara Streisand
Barbara Streisand原創
2025-01-12 06:13:47858瀏覽

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

在 .NET XML 序列化期間消除空值

.NET XmlSerializer 的預設行為在序列化 XML 輸出中包含空值。 這通常是不受歡迎的。 讓我們來看看如何防止這種情況發生。 考慮從範例類別產生的以下 XML:

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

請注意,mynullableint(設定為 null 的可空整數)仍存在於 XML 中。 解決方案在於使用 ShouldSerialize 模式。

要排除 null MyNullableInt 屬性,請在類別中實作此方法:

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

此方法有條件地控制序列化。 僅當 true 包含值時才傳回 MyNullableInt,確保其包含在 XML 中。 否則,它會傳回 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>

使用此 ShouldSerializeAge 方法,以下程式碼將產生不含 Age 元素的 XML,因為它為 null:

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

產生的 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>

以上是如何防止 .NET XML 序列化出現空值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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