Bei der XML-Serialisierung ist es oft wünschenswert, die Darstellung des Stammelements für Sammlungen zu unterdrücken. Dadurch können XML-Strukturen vereinfacht und die Lesbarkeit verbessert werden. In diesem Artikel wird erläutert, wie Sie dies mit dem XmlSerializer von ASP.NET erreichen.
Betrachten Sie die folgende ShopItem-Klasse mit XML-Serialisierungsattributen:
[XmlRoot(ElementName = "SHOPITEM", Namespace = "")] public class ShopItem { [XmlElement("PRODUCTNAME")] public string ProductName { get; set; } [XmlArrayItem("VARIANT")] public List<ShopItem> Variants { get; set; } }
Das Serialisieren einer Instanz dieser Klasse erzeugt das folgende XML:
<SHOPITEM xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <PRODUCTNAME>test</PRODUCTNAME> <Variants> <VARIANT> <PRODUCTNAME>hi 1</PRODUCTNAME> </VARIANT> <VARIANT> <PRODUCTNAME>hi 2</PRODUCTNAME> </VARIANT> </Variants> </SHOPITEM>
Wie Sie sehen, ist ein unerwünschter
[XmlRoot("SHOPITEM")] public class ShopItem { [XmlElement("PRODUCTNAME")] public string ProductName { get; set; } [XmlElement("VARIANT")] // Replaced [XmlArrayItem] public List<ShopItem> Variants { get; set; } }
Diese Änderung führt zu folgendem vereinfachten XML:
<SHOPITEM> <PRODUCTNAME>test</PRODUCTNAME> <VARIANT> <PRODUCTNAME>hi 1</PRODUCTNAME> </VARIANT> <VARIANT> <PRODUCTNAME>hi 2</PRODUCTNAME> </VARIANT> </SHOPITEM>
Außerdem kann Folgendes auftreten XML-Namespaces wie xsi und xsd im Root-Element. Um diese zu entfernen, erstellen Sie eine XmlSerializerNamespaces-Instanz mit einem leeren Namespace und übergeben Sie ihn während der Serialisierung.
Hier ist ein Beispiel:
XmlSerializerNamespaces ns = new XmlSerializerNamespaces(); ns.Add("", ""); XmlSerializer ser = new XmlSerializer(typeof(ShopItem)); ser.Serialize(Console.Out, item, ns);
Dadurch werden die unerwünschten Namespaces aus der XML-Ausgabe entfernt.
Das obige ist der detaillierte Inhalt vonWie entferne ich das Root-Element aus einem XML-Array mit XmlSerializer?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!