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