.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中文網其他相關文章!