Saat menggunakan standar .NET Xml Serializer, apakah ada cara saya bisa menyembunyikan semua nilai nol? Di bawah ini adalah contoh dari output kelas saya. Saya tidak ingin menampilkan bilangan bulat nullable jika mereka diatur ke nol.
Output Xml saat ini:
<?xml version="1.0" encoding="utf-8"?>
<myClass>
<myNullableInt p2:nil="true" xmlns:p2="http://www.w3.org/2001/XMLSchema-instance" />
<myOtherInt>-1</myOtherInt>
</myClass>
Apa yang saya inginkan:
<?xml version="1.0" encoding="utf-8"?>
<myClass>
<myOtherInt>-1</myOtherInt>
</myClass>
c#
.net
xml-serialization
Pendidikan Guru
sumber
sumber
Sebagai tambahan terhadap apa yang ditulis oleh Chris Taylor: jika Anda memiliki sesuatu yang diserialisasi sebagai atribut, Anda dapat memiliki properti di kelas Anda yang
{PropertyName}Specified
akan dikontrol untuk menentukan apakah harus diserialisasi. Dalam kode:sumber
{PropertyName}Specified
atribut harus bertipe bool.Itu ada properti yang disebut
XmlElementAttribute.IsNullable
Jika properti IsNullable disetel ke true, atribut xsi: nil dihasilkan untuk anggota kelas yang telah disetel ke referensi nol.
Contoh berikut memperlihatkan bidang dengan
XmlElementAttribute
diterapkan ke itu, dan properti IsNullable disetel ke false.Anda dapat melihat-lihat orang lain
XmlElementAttribute
untuk mengubah nama dalam serialisasi dll.sumber
Anda dapat menentukan beberapa nilai default dan mencegah bidang menjadi serial.
sumber
Saya lebih suka membuat xml saya sendiri tanpa tag yang dibuat secara otomatis. Dalam hal ini saya dapat mengabaikan membuat node dengan nilai nol:
sumber
sumber
Dalam kasus saya variabel / elemen yang dapat dibatalkan semua adalah tipe String. Jadi, saya hanya melakukan pemeriksaan dan menugaskan mereka string.Empty dalam kasus NULL. Dengan cara ini saya menyingkirkan atribut nil dan xmlns yang tidak perlu (p3: nil = "true" xmlns: p3 = "http://www.w3.org/2001/XMLSchema-instance)
sumber