Maison >développement back-end >C++ >Comment supprimer l'élément racine d'un tableau XML à l'aide de XmlSerializer ?
Dans la sérialisation XML, il est souvent souhaitable de supprimer le rendu de l'élément racine pour les collections. Cela peut simplifier les structures XML et améliorer la lisibilité. Cet article explique comment y parvenir à l'aide de XmlSerializer d'ASP.NET.
Considérez la classe ShopItem suivante avec des attributs de sérialisation XML :
[XmlRoot(ElementName = "SHOPITEM", Namespace = "")] public class ShopItem { [XmlElement("PRODUCTNAME")] public string ProductName { get; set; } [XmlArrayItem("VARIANT")] public List<ShopItem> Variants { get; set; } }
La sérialisation d'une instance de cette classe produit le XML suivant :
<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>
Comme vous pouvez le constater, un
[XmlRoot("SHOPITEM")] public class ShopItem { [XmlElement("PRODUCTNAME")] public string ProductName { get; set; } [XmlElement("VARIANT")] // Replaced [XmlArrayItem] public List<ShopItem> Variants { get; set; } }
Cette modification donne le XML simplifié suivant :
<SHOPITEM> <PRODUCTNAME>test</PRODUCTNAME> <VARIANT> <PRODUCTNAME>hi 1</PRODUCTNAME> </VARIANT> <VARIANT> <PRODUCTNAME>hi 2</PRODUCTNAME> </VARIANT> </SHOPITEM>
De plus, vous pouvez rencontrer Espaces de noms XML tels que xsi et xsd dans l'élément racine. Pour les supprimer, créez une instance XmlSerializerNamespaces avec un espace de noms vide et transmettez-la lors de la sérialisation.
Voici un exemple :
XmlSerializerNamespaces ns = new XmlSerializerNamespaces(); ns.Add("", ""); XmlSerializer ser = new XmlSerializer(typeof(ShopItem)); ser.Serialize(Console.Out, item, ns);
Cela éliminera les espaces de noms indésirables de la sortie XML.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!