Lumpuhkan Rendering Elemen Root Array dalam Serialisasi XML
Dalam siri XML, anda mungkin menghadapi situasi di mana anda perlu melumpuhkan pemaparan unsur akar tatasusunan. Soalan ini menggambarkan senario di mana kelas dengan koleksi objek bersiri, menghasilkan XML dengan elemen akar yang tidak diingini.
Penyelesaian:
Untuk melumpuhkan pemaparan daripada elemen akar, anda boleh menggantikan atribut [XmlArrayItem] dengan [XmlElement] pada harta koleksi. Ini mengarahkan penyiri untuk mensiri secara langsung elemen koleksi dan bukannya melampirkannya dalam elemen akar.
Selain itu, untuk mengalih keluar ruang nama xsi dan xsd yang tidak diperlukan daripada elemen akar, anda boleh membuat contoh XmlSerializerNamespaces dengan kosong ruang nama. Contoh ruang nama ini boleh dihantar semasa penyirian untuk mengelakkan kemasukan ruang nama yang tidak diingini.
Contoh:
Coretan kod berikut menunjukkan takrifan kelas dan proses bersiri yang disemak:
[XmlRoot("SHOPITEM")] public class ShopItem { [XmlElement("PRODUCTNAME")] public string ProductName { get; set; } [XmlElement("VARIANT")] // was [XmlArrayItem] public List<ShopItem> Variants { get; set; } } // ... XmlSerializerNamespaces ns = new XmlSerializerNamespaces(); ns.Add("", ""); // Empty namespace to remove xsi/xsd XmlSerializer ser = new XmlSerializer(typeof(ShopItem)); ser.Serialize(Console.Out, item, ns);
Dengan perubahan ini berlaku, XML yang terhasil tidak lagi mengandungi Elemen akar "Varian" dan akan kekurangan ruang nama xsi/xsd. Ini dengan berkesan melumpuhkan pemaparan elemen akar untuk tatasusunan.
Atas ialah kandungan terperinci Bagaimana untuk Mencegah Pensiri XML bagi Elemen Root Array?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!