Maison > développement back-end > C++ > Comment empêcher la sérialisation XML de l'élément racine d'un tableau ?

Comment empêcher la sérialisation XML de l'élément racine d'un tableau ?

Patricia Arquette
Libérer: 2025-01-02 18:16:39
original
628 Les gens l'ont consulté

How to Prevent XML Serialization of an Array's Root Element?

Désactiver le rendu de l'élément racine du tableau dans la sérialisation XML

Dans la sérialisation XML, vous pouvez rencontrer une situation dans laquelle vous devez désactiver le rendu de l'élément racine d'un tableau. Cette question illustre un scénario dans lequel une classe avec une collection d'objets est sérialisée, ce qui entraîne un XML avec un élément racine indésirable.

Résolution :

Pour désactiver le rendu de l'élément racine, vous pouvez remplacer l'attribut [XmlArrayItem] par [XmlElement] sur la propriété de collection. Cela demande au sérialiseur de sérialiser directement les éléments de collection au lieu de les enfermer dans un élément racine.

De plus, pour supprimer les espaces de noms xsi et xsd inutiles de l'élément racine, vous pouvez créer une instance de XmlSerializerNamespaces avec un vide espace de noms. Cette instance d'espace de noms peut être transmise lors de la sérialisation pour empêcher l'inclusion d'espaces de noms indésirables.

Exemple :

L'extrait de code suivant illustre la définition de classe révisée et le processus de sérialisation :

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

Avec ces modifications en place, le XML résultant ne contiendra plus l'élément racine « Variantes » et ne comportera pas l'élément racine Espaces de noms xsi/xsd. Cela désactive effectivement le rendu de l'élément racine du tableau.

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!

source:php.cn
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