.NET XML シリアル化での Null 値の抑制
デフォルトの .NET XML シリアライザーには null 値が含まれており、多くの場合「nil」属性でマークされます。 これにより、理想的ではない XML 出力が得られる可能性があります。 この記事では、シリアル化された XML から null 値をきれいに省略する手法を説明します。
これを実現するには、[XmlIgnore]
属性を利用するか、カスタムのシリアル化ロジックを実装できます。
方法 1: [XmlIgnore]
属性を使用する
最も簡単なアプローチは、[XmlIgnore]
属性を使用することです。 この属性は、シリアル化中にプロパティを完全に無視するようにシリアライザーに指示します。
<code class="language-csharp">public class MyClass { [XmlIgnore] public int? MyNullableInt { get; set; } public int MyOtherInt { get; set; } }</code>
ここでは、MyNullableInt
はその値に関係なく XML から除外されます。
方法 2: ShouldSerialize
さらに制御するには、カスタム ShouldSerialize
メソッドを作成します。 このメソッドは、プロパティをその値に基づいてシリアル化する必要があるかどうかを決定します。
<code class="language-csharp">public class MyClass { private int? _myNullableInt; [XmlIgnore] public int? MyNullableInt { get => _myNullableInt; set => _myNullableInt = value; } public int MyOtherInt { get; set; } public bool ShouldSerializeMyNullableInt() { return _myNullableInt.HasValue; } }</code>
ShouldSerializeMyNullableInt
メソッドは、true
が値を保持している場合にのみ MyNullableInt
を返します。それ以外の場合は、XML から省略されます。 これにより、どの Null 値を含めるかを詳細に制御できます。
これらのメソッドのいずれかを使用すると、.NET XML シリアル化中に null 値を効果的に管理でき、よりクリーンでよりカスタマイズされた XML 出力が得られます。
以上が.NET XML シリアル化で Null 値を非表示にするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。