Maison >développement back-end >C++ >Comment puis-je supprimer les valeurs nulles lors de l'utilisation du sérialiseur XML .NET ?

Comment puis-je supprimer les valeurs nulles lors de l'utilisation du sérialiseur XML .NET ?

Linda Hamilton
Linda Hamiltonoriginal
2025-01-12 08:26:42900parcourir

How Can I Suppress Null Values When Using the .NET Xml Serializer?

Sérialisation XML .NET : gestion des valeurs nulles

Le sérialiseur XML .NET standard inclut des valeurs nulles par défaut. Pour les exclure, utilisez le modèle ShouldSerialize. Ce modèle vous permet de définir si une propriété doit être sérialisée.

Pour chaque propriété nécessitant la suppression des valeurs nulles, créez une méthode nommée ShouldSerialize{PropertyName}. Par exemple, une propriété entière nullable MyNullableInt aurait besoin de cette méthode :

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

Cette méthode renvoie true si MyNullableInt a une valeur, déclenchant la sérialisation. Sinon, il renvoie false, empêchant la sérialisation de la valeur nulle.

Voici un exemple de classe démontrant cela :

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

Sérialiser une instance :

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

Le XML résultant omet l'élément Age en raison de sa valeur nulle :

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

L'utilisation de méthodes ShouldSerialize personnalisées fournit un contrôle granulaire sur la sérialisation, permettant l'omission sélective des valeurs nulles pour une sortie XML plus concise et efficace.

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