Maison > développement back-end > C++ > Comment supprimer l'élément racine d'un tableau XML à l'aide de XmlSerializer ?

Comment supprimer l'élément racine d'un tableau XML à l'aide de XmlSerializer ?

Susan Sarandon
Libérer: 2024-12-29 20:53:18
original
814 Les gens l'ont consulté

How to Remove the Root Element from an XML Array Using XmlSerializer?

Sérialisation XML : désactivation de l'élément racine d'un tableau

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; }
}
Copier après la connexion

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>
Copier après la connexion

Comme vous pouvez le constater, un l'élément racine est présent. Pour désactiver son rendu, vous devez remplacer l'attribut [XmlArrayItem] par [XmlElement].

[XmlRoot("SHOPITEM")]
public class ShopItem
{
    [XmlElement("PRODUCTNAME")]
    public string ProductName { get; set; }

    [XmlElement("VARIANT")] // Replaced [XmlArrayItem]
    public List<ShopItem> Variants { get; set; }
}
Copier après la connexion

Cette modification donne le XML simplifié suivant :

<SHOPITEM>
  <PRODUCTNAME>test</PRODUCTNAME>
  <VARIANT>
    <PRODUCTNAME>hi 1</PRODUCTNAME>
  </VARIANT>
  <VARIANT>
    <PRODUCTNAME>hi 2</PRODUCTNAME>
  </VARIANT>
</SHOPITEM>
Copier après la connexion

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);
Copier après la connexion

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!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal