Maison >développement back-end >C++ >Comment puis-je empêcher les valeurs nulles d'apparaître dans la sérialisation XML .NET ?
É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!