Maison > développement back-end > C++ > Comment puis-je empêcher les valeurs nulles d'apparaître dans la sérialisation XML .NET ?

Comment puis-je empêcher les valeurs nulles d'apparaître dans la sérialisation XML .NET ?

Barbara Streisand
Libérer: 2025-01-12 06:13:47
original
937 Les gens l'ont consulté

How Can I Prevent Null Values from Appearing in .NET XML Serialization?

Élimination des valeurs nulles lors de la sérialisation XML .NET

Le comportement par défaut de XmlSerializer de .NET inclut des valeurs nulles dans la sortie XML sérialisée. Cela peut souvent être indésirable. Examinons comment éviter cela. Considérez le XML suivant généré à partir d'un exemple de classe :

<?xml version="1.0" encoding="utf-8"?><myclass><mynullableint p2:nil="true" xmlns:p2="http://www.w3.org/2001/XMLSchema-instance"></mynullableint><myotherint>-1</myotherint></myclass>
Copier après la connexion

Notez que mynullableint, un entier nullable défini sur null, est toujours présent dans le XML. La solution réside dans l'utilisation du modèle ShouldSerialize.

Pour exclure une propriété MyNullableInt nulle, implémentez cette méthode dans votre classe :

public bool ShouldSerializeMyNullableInt()
{
  return MyNullableInt.HasValue;
}
Copier après la connexion

Cette méthode contrôle conditionnellement la sérialisation. Il renvoie true uniquement si MyNullableInt contient une valeur, garantissant son inclusion dans le XML. Sinon, il renvoie false, supprimant ainsi l'élément.

Voici un exemple complet :

public class Person
{
  public string Name { get; set; }
  public int? Age { get; set; }
  public bool ShouldSerializeAge()
  {
    return Age.HasValue;
  }
}
Copier après la connexion

Avec cette méthode ShouldSerializeAge, le code suivant produit du XML sans l'élément Age car il est nul :

Person thePerson = new Person() { Name = "Chris" };
XmlSerializer xs = new XmlSerializer(typeof(Person));
StringWriter sw = new StringWriter();
xs.Serialize(sw, thePerson);
Copier après la connexion

XML résultant :

<person xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><name>Chris</name></person>
Copier après la connexion

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal