Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Mengawal Awalan Ruang Nama dalam Pensiri XML C#?
Menyesuaikan Awalan Ruang Nama dalam Pensirian XML C#
Pembangun selalunya perlu memperhalusi pengendalian ruang nama semasa penyiaran XML dalam C#. Kedua-dua DataContractSerializer
dan XmlSerializer
menyokong ruang nama, tetapi tugasan awalan lalainya mungkin tidak selalu memenuhi keperluan projek tertentu.
Menentukan Awalan Ruang Nama
Kelas XmlSerializerNamespaces
menyediakan penyelesaian untuk mengawal awalan ruang nama. Kelas ini membolehkan anda memetakan awalan secara eksplisit kepada URI ruang nama. Berikut ialah ilustrasi:
<code class="language-csharp">[XmlRoot("Node", Namespace = "https://www.php.cn/link/8f94eafb14366ce488946e40d8b4694e")] public class MyType { [XmlElement("childNode")] public string Value { get; set; } } static class Program { static void Main() { XmlSerializerNamespaces namespaces = new XmlSerializerNamespaces(); namespaces.Add("myNamespace", "https://www.php.cn/link/8f94eafb14366ce488946e40d8b4694e"); XmlSerializer serializer = new XmlSerializer(typeof(MyType)); serializer.Serialize(Console.Out, new MyType(), namespaces); } }</code>
Kod ini mentakrifkan MyType
, menyatakan elemen akar dan ruang nama menggunakan atribut XML. Contoh XmlSerializerNamespaces
dibuat, mengaitkan "myNamespace" dengan "https://www.php.cn/link/8f94eafb14366ce488946e40d8b4694e". Menghantar ini kepada kaedah Serialize
memastikan penyeri bersiri menggunakan awalan tersuai.
Pengubahsuaian Ruang Nama Masa Jalan
Untuk pelarasan ruang nama masa jalan, kelas XmlAttributeOverrides
menawarkan cara untuk mengatasi atribut XML lalai kelas. Yang berikut menunjukkan perubahan ruang nama dinamik:
<code class="language-csharp">XmlAttributeOverrides overrides = new XmlAttributeOverrides(); overrides.Add(typeof(MyType), "Root", new XmlRootAttribute("Node") { Namespace = "https://www.php.cn/link/7cf68b210274ef46d38b0cd76e059af6" }); XmlSerializer serializer = new XmlSerializer(typeof(MyType), overrides); serializer.Serialize(Console.Out, new MyType(), namespaces);</code>
Contoh ini menggunakan XmlAttributeOverrides
untuk mengubah ruang nama MyType
pada masa jalan kepada "https://www.php.cn/link/7cf68b210274ef46d38b0cd76e059af6" sebelum bersiri.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengawal Awalan Ruang Nama dalam Pensiri XML C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!