.NET XML シリアル化: Null 値の処理
標準の .NET XML シリアライザーには、デフォルトで null 値が含まれています。 これらを除外するには、ShouldSerialize
パターンを利用します。このパターンを使用すると、プロパティをシリアル化する必要があるかどうかを定義できます。
Null 値の抑制が必要なプロパティごとに、ShouldSerialize{PropertyName}
という名前のメソッドを作成します。 たとえば、Null 許容整数プロパティ MyNullableInt
には次のメソッドが必要です:
<code class="language-csharp">public bool ShouldSerializeMyNullableInt() { return MyNullableInt.HasValue; }</code>
このメソッドは、true
に値がある場合に MyNullableInt
を返し、シリアル化をトリガーします。 それ以外の場合は、false
を返し、null 値のシリアル化を防ぎます。
これを示すクラスの例を次に示します。
<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 では、null 値のため 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
メソッドを使用すると、シリアル化をきめ細かく制御できるため、null 値を選択的に省略して、より簡潔で効果的な XML 出力が可能になります。
以上が.NET Xml シリアライザーの使用時に Null 値を抑制するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。