Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Boleh Mengawal Awalan Ruang Nama dalam Pensiri XML C#?

Bagaimanakah Saya Boleh Mengawal Awalan Ruang Nama dalam Pensiri XML C#?

Barbara Streisand
Lepaskan: 2025-01-15 08:35:43
asal
450 orang telah melayarinya

How Can I Control Namespace Prefixes in C# XML Serialization?

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

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

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!

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