Heim >Backend-Entwicklung >C++ >Wie entferne ich das Root-Element aus einem XML-Array mit XmlSerializer?
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; } }</shopitem>
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; } }</shopitem>
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!