Kawalan ruang nama dalam siri C# XML
Dalam penyiaran XML, kadangkala perlu untuk menentukan awalan ruang nama untuk ruang nama tertentu. Dalam C#, kedua-dua XmlSerializer dan DataContractSerializer menyediakan pilihan untuk siri XML, tetapi mengawal awalan ruang nama boleh menjadi satu cabaran.
Kawal awalan ruang nama
Untuk mengawal awalan ruang nama, kedua-dua XmlSerializer dan DataContractSerializer boleh menggunakan kelas XmlSerializerNamespaces. Kelas ini membenarkan penambahan ruang nama dengan awalan yang ditentukan khusus. Berikut ialah contoh menggunakan XmlSerializer:
<code class="language-csharp">[XmlRoot("Node", Namespace="http://flibble")] public class MyType { [XmlElement("childNode")] public string Value { get; set; } } static class Program { static void Main() { XmlSerializerNamespaces ns = new XmlSerializerNamespaces(); ns.Add("myNamespace", "http://flibble"); XmlSerializer xser = new XmlSerializer(typeof(MyType)); xser.Serialize(Console.Out, new MyType(), ns); } }</code>
Kemas kini ruang nama dinamik
Jika anda perlu menukar ruang nama semasa runtime, anda boleh menggunakan XmlAttributeOverrides:
<code class="language-csharp">XmlAttributeOverrides ovr = new XmlAttributeOverrides(); ovd.Add(typeof(MyType),"Namespace",new XmlAttributeAttribute("http://newnamespace"));</code>
Pilih penyeri bersiri yang sesuai
Walaupun kedua-dua penyeri bersiri mempunyai kelebihan dan kekurangan, XmlSerializer terkenal dengan kebolehannya mengawal awalan ruang nama dan telah menetapkan contoh pemetaan ruang nama tertentu melalui XmlSerializerNamespaces.
Untuk senario di mana anda memerlukan kawalan penuh ke atas awalan ruang nama, pertimbangkan untuk menggunakan XmlSerializer dengan XmlSerializerNamespaces. Walau bagaimanapun, untuk perubahan ruang nama dinamik, pertimbangkan untuk menggunakan XmlAttributeOverrides.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengawal Awalan Ruang Nama Semasa Pensirian XML dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!