Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Menindas Nilai Null Apabila Menggunakan Serializer .NET Xml?

Bagaimanakah Saya Boleh Menindas Nilai Null Apabila Menggunakan Serializer .NET Xml?

Linda Hamilton
Linda Hamiltonasal
2025-01-12 08:26:42944semak imbas

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

.Bersiri XML BERSIH: Mengendalikan Nilai Null

Pensiri .NET XML standard termasuk nilai nol secara lalai. Untuk mengecualikan ini, gunakan corak ShouldSerialize. Corak ini membolehkan anda menentukan sama ada sesuatu sifat perlu disirikan.

Untuk setiap sifat yang memerlukan penindasan nilai nol, buat kaedah bernama ShouldSerialize{PropertyName}. Sebagai contoh, sifat integer nullable MyNullableInt memerlukan kaedah ini:

<code class="language-csharp">public bool ShouldSerializeMyNullableInt()
{
  return MyNullableInt.HasValue;
}</code>

Kaedah ini mengembalikan true jika MyNullableInt mempunyai nilai, mencetuskan siri. Jika tidak, ia mengembalikan false, menghalang siri nilai nol.

Berikut ialah kelas contoh yang menunjukkan perkara ini:

<code class="language-csharp">public class Person
{
  public string Name { get; set; }
  public int? Age { get; set; }
  public bool ShouldSerializeAge()
  {
    return Age.HasValue;
  }
}</code>

Mensiri contoh:

<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 yang terhasil meninggalkan elemen Age kerana nilai nolnya:

<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>

Menggunakan kaedah ShouldSerialize tersuai menyediakan kawalan berbutir ke atas penyirian, membolehkan peninggalan terpilih bagi nilai nol untuk output XML yang lebih ringkas dan berkesan.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menindas Nilai Null Apabila Menggunakan Serializer .NET Xml?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn