ホームページ >バックエンド開発 >C++ >.NET Xml シリアライザーの使用時に Null 値を抑制するにはどうすればよいですか?

.NET Xml シリアライザーの使用時に Null 値を抑制するにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2025-01-12 08:26:42902ブラウズ

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

.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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。