首頁 >後端開發 >C++ >如何防止數組根元素的 XML 序列化?

如何防止數組根元素的 XML 序列化?

Patricia Arquette
Patricia Arquette原創
2025-01-02 18:16:39642瀏覽

How to Prevent XML Serialization of an Array's Root Element?

在XML 序列化中禁用數組根元素的渲染

在XML 序列化中,你可能會遇到需要禁用以下元素的渲染的情況:數組的根元素。這個問題說明了一個場景,其中具有物件集合的類別被序列化,導致 XML 包含不需要的根元素。

解決方案:

停用渲染對於根元素,您可以將集合屬性上的 [XmlArrayItem] 屬性替換為 [XmlElement]。這指示序列化器直接序列化集合元素,而不是將它們包含在根元素中。

此外,要從根元素中刪除不必要的 xsi 和 xsd 命名空間,您可以建立一個帶有空的 XmlSerializerNamespaces 實例。命名空間。可以在序列化期間傳遞此命名空間實例,以防止包含不必要的命名空間。

範例:

以下程式碼片段示範了修改後的類別定義和序列化過程:

[XmlRoot("SHOPITEM")]
public class ShopItem
{
    [XmlElement("PRODUCTNAME")]
    public string ProductName { get; set; }

    [XmlElement("VARIANT")] // was [XmlArrayItem]
    public List<ShopItem> Variants { get; set; }
}

// ...

XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
ns.Add("", ""); // Empty namespace to remove xsi/xsd

XmlSerializer ser = new XmlSerializer(typeof(ShopItem));
ser.Serialize(Console.Out, item, ns);

完成這些變更後,生成的XML 將不再包含「Variants」根元素,並且將缺少xsi/xsd 命名空間。這有效地禁用了數組根元素的渲染。

以上是如何防止數組根元素的 XML 序列化?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn