ホームページ >バックエンド開発 >C++ >.NET XML シリアル化で Null 値が表示されないようにするにはどうすればよいですか?

.NET XML シリアル化で Null 値が表示されないようにするにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2025-01-12 06:13:47816ブラウズ

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

.NET XML シリアル化中の Null 値の削除

.NET の XmlSerializer のデフォルトの動作には、シリアル化された XML 出力に null 値が含まれます。 これは多くの場合、望ましくないことになります。 これを防ぐ方法を検討してみましょう。 サンプル クラスから生成された次の 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 許容整数である 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 要素が null であるため、この要素を含まない XML を生成します。

<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 シリアル化で Null 値が表示されないようにするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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