Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Mengawal Awalan Ruang Nama dalam Sirialisasi XML .NET?
Siri .NET XML: kawalan awalan ruang nama
.NET menyediakan dua mekanisme siri XML utama: DataContractSerializer
dan XmlSerializer
. Walau bagaimanapun, awalan ruang nama yang dijana lalai mereka diuruskan oleh mekanisme dalaman, yang mengehadkan keperluan untuk awalan tersuai.
Menggunakan XmlSerializerNamespaces
Jika anda perlu mengawal alias ruang nama, kelas XmlSerializerNamespaces
adalah ideal. Ia membenarkan secara eksplisit menentukan alias untuk ruang nama tertentu dalam XML bersiri.
Contoh kod berikut menunjukkan cara menggunakan XmlSerializerNamespaces
untuk mengawal alias ruang nama:
<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 ns = new XmlSerializerNamespaces(); ns.Add("myNamespace", "https://www.php.cn/link/8f94eafb14366ce488946e40d8b4694e"); XmlSerializer xser = new XmlSerializer(typeof(MyType)); xser.Serialize(Console.Out, new MyType(), ns); } }</code>
Kod ini memberikan alias "myNamespace" kepada ruang nama "https://www.php.cn/link/8f94eafb14366ce488946e40d8b4694e". Output XML bersiri adalah seperti berikut:
<code class="language-xml"><node xmlns:mynamespace="https://www.php.cn/link/8f94eafb14366ce488946e40d8b4694e"><childnode>something in here</childnode></node></code>
Gunakan XmlAttributeOverrides
Untuk menukar ruang nama secara dinamik pada masa jalan, anda boleh menggunakan kelas XmlAttributeOverrides
. Ia membenarkan mengatasi tetapan ruang nama lalai untuk jenis sifat tertentu.
Sebagai contoh, kod berikut menunjukkan cara menggunakan XmlAttributeOverrides
untuk menukar ruang nama:
<code class="language-csharp">XmlAttributeOverrides ovrd = new XmlAttributeOverrides(); ovrd.Add(typeof(MyType), "childNode", new XmlAttributeOverrides() { { typeof(XmlElementAttribute), new XmlElementAttribute("childNode", "https://www.php.cn/link/bb01f00daaeac676313d2031dfd1e419") } }); XmlSerializer xser = new XmlSerializer(typeof(MyType), ovrd); xser.Serialize(Console.Out, new MyType());</code>
Kod ini mengatasi ruang nama lalai atribut childNode
, menghalakannya ke "https://www.php.cn/link/bb01f00daaeac676313d2031dfd1e419".
Atas ialah kandungan terperinci Bagaimana untuk Mengawal Awalan Ruang Nama dalam Sirialisasi XML .NET?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!