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

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

Patricia Arquette
發布: 2025-01-02 18:16:39
原創
627 人瀏覽過

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中文網其他相關文章!

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