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:
<?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>
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:
public bool ShouldSerializeMyNullableInt() { return MyNullableInt.HasValue; }
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:
public class Person { public string Name { get; set; } public int? Age { get; set; } public bool ShouldSerializeAge() { return Age.HasValue; } }
Dengan kaedah ShouldSerializeAge
ini, kod berikut menghasilkan XML tanpa elemen Age
kerana ia adalah batal:
Person thePerson = new Person() { Name = "Chris" }; XmlSerializer xs = new XmlSerializer(typeof(Person)); StringWriter sw = new StringWriter(); xs.Serialize(sw, thePerson);
XML yang terhasil:
<person xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><name>Chris</name></person>
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!