将XML反序列化为对象:xsi:nil =“true”的XML元素对于对象中的各个属性应该具有空值(而不是空值)

时间:2017-10-05 11:59:23

标签: c# xml-serialization xml-deserialization

将下面的XML反序列化为Parent类时,ElementTwo和ElementThree是空字符串,这是预期的。但ElementOne应该为null,但这也是空字符串。

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>

C#Class

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

将XML反序列化为对象时,xsi:nil =“true”的XML元素不会转换为null。相反,它被指定为空字符串。但我有一个要求,它应该只转换为null。请帮我弄清楚我出错的地方的解决方案或要点

我已经给出了以下小提琴链接中使用的样本:

https://dotnetfiddle.net/VfNJYv

1 个答案:

答案 0 :(得分:0)

[XmlElement(IsNullable=true)] 

以上 Public string ElementOne获取/设置属性

.NET fiddle