Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Menghalang Nilai Null daripada Muncul dalam Pensirian XML .NET?
Menghapuskan Nilai Null Semasa .NET XML Serialisasi
Tingkah laku lalai .NET XmlSerializer
termasuk nilai nol dalam output XML bersiri. Ini selalunya tidak diingini. Mari kita periksa bagaimana untuk mencegah perkara ini. Pertimbangkan XML berikut yang dijana daripada kelas sampel:
<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>
Perhatikan bahawa mynullableint
, integer nullable yang ditetapkan kepada null
, masih terdapat dalam XML. Penyelesaiannya terletak pada penggunaan corak ShouldSerialize
.
Untuk mengecualikan harta MyNullableInt
null, laksanakan kaedah ini dalam kelas anda:
<code class="language-csharp">public bool ShouldSerializeMyNullableInt() { return MyNullableInt.HasValue; }</code>
Kaedah ini mengawal bersiri secara bersyarat. Ia mengembalikan true
hanya jika MyNullableInt
memegang nilai, memastikan kemasukannya dalam XML. Jika tidak, ia mengembalikan false
, menekan elemen dengan berkesan.
Berikut ialah contoh lengkap:
<code class="language-csharp">public class Person { public string Name { get; set; } public int? Age { get; set; } public bool ShouldSerializeAge() { return Age.HasValue; } }</code>
Dengan kaedah ShouldSerializeAge
ini, kod berikut menghasilkan XML tanpa elemen Age
kerana ia adalah batal:
<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 yang terhasil:
<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>
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menghalang Nilai Null daripada Muncul dalam Pensirian XML .NET?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!