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
Barbara Streisandoriginal
2025-01-12 06:13:47816parcourir

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 :

<code class="language-xml"><?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></code>

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 :

<code class="language-csharp">public bool ShouldSerializeMyNullableInt()
{
  return MyNullableInt.HasValue;
}</code>

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 :

<code class="language-csharp">public class Person
{
  public string Name { get; set; }
  public int? Age { get; set; }
  public bool ShouldSerializeAge()
  {
    return Age.HasValue;
  }
}</code>

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

<code class="language-csharp">Person thePerson = new Person() { Name = "Chris" };
XmlSerializer xs = new XmlSerializer(typeof(Person));
StringWriter sw = new StringWriter();
xs.Serialize(sw, thePerson);</code>

XML résultant :

<code class="language-xml"><person xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><name>Chris</name></person></code>

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:
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