Rumah > pembangunan bahagian belakang > C++ > Bagaimana untuk Mencegah Pensiri XML bagi Elemen Root Array?

Bagaimana untuk Mencegah Pensiri XML bagi Elemen Root Array?

Patricia Arquette
Lepaskan: 2025-01-02 18:16:39
asal
627 orang telah melayarinya

How to Prevent XML Serialization of an Array's Root Element?

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);
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan