Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Mengawal Awalan Ruang Nama dalam Sirialisasi XML .NET?

Bagaimana untuk Mengawal Awalan Ruang Nama dalam Sirialisasi XML .NET?

Barbara Streisand
Barbara Streisandasal
2025-01-15 08:10:44270semak imbas

How to Control Namespace Prefixes in .NET XML Serialization?

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!

Kenyataan:
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