首頁 > 後端開發 > C++ > 如何控制 C# XML 序列化中的命名空間前綴?

如何控制 C# XML 序列化中的命名空間前綴?

Barbara Streisand
發布: 2025-01-15 08:35:43
原創
383 人瀏覽過

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

在 C# XML 序列化中自訂命名空間前綴

開發人員經常需要在 C# 中的 XML 序列化過程中微調命名空間處理。 DataContractSerializerXmlSerializer 都支援命名空間,但它們的預設前綴分配可能並不總是滿足特定的項目需求。

指定命名空間前綴

XmlSerializerNamespaces 類別提供了控制命名空間前綴的解決方案。 此類別可讓您將前綴明確地對應到名稱空間 URI。 這是一個例子:

<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>
登入後複製

此程式碼定義 MyType,使用 XML 屬性指定其根元素和命名空間。 建立一個 XmlSerializerNamespaces 實例,將「myNamespace」與「https://www.php.cn/link/8f94eafb14366ce488946e40d8b4694e」關聯起來。 將此傳遞給 Serialize 方法可確保序列化程式使用自訂前綴。

運行時命名空間修改

對於執行時期命名空間調整,XmlAttributeOverrides 類別提供了一種覆蓋類別的預設 XML 屬性的方法。 下面示範了動態命名空間變化:

<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>
登入後複製

此範例在序列化之前使用 XmlAttributeOverrides 在運行時將 MyType 的命名空間更改為「https://www.php.cn/link/7cf68b210274ef46d38b0cd76e059af6」。

以上是如何控制 C# XML 序列化中的命名空間前綴?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板