2017-10-05 7 views
1

Lors de la sérialisation du code XML ci-dessous dans la classe Parent, ElementTwo et ElementThree chaînes vides, ce qui est attendu. Mais ElementOne aurait dû être null mais à la place c'est aussi une chaîne vide.Désérialisation d'un XML dans un objet: l'élément XML avec xsi: nil = "true" doit avoir une valeur nulle (et non vide) pour la propriété correspondante dans l'objet

What does i:nil="true" mean?

XML

<?xml version = \"1.0\" ?> 
<Parent 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
<ElementOne xsi:nil="true"/> 
<ElementTwo></ElementTwo> 
<ElementThree /> 
<ElementFour>Value</ElementFour> 
</Parent> 

classe C#

public class Parent 
{ 
    public string ElementOne { get; set; } 
    public string ElementTwo { get; set; } 
    public string ElementThree { get; set; } 
    public string ElementFour { get; set; } 
} 

Lorsque de-sérialisation XML dans un objet, l'élément XML avec xsi: nil = » true "n'est pas converti en tant que null. Au lieu de cela, il est affecté en tant que chaîne vide. Mais j'ai une exigence où il devrait être converti en null seulement. S'il vous plaît aidez-moi à trouver une solution ou un point mis où je suis allé mal

J'ai donné l'échantillon utilisé en lien ci-dessous violon:

https://dotnetfiddle.net/VfNJYv

Répondre

0

Mettre

[XmlElement(IsNullable=true)] 

ci-dessus le Public string ElementOne get/set propriété

.NET fiddle