对null字符串进行反序列化

时间:2014-05-15 09:08:26

标签: c# xml xml-deserialization

我想将XML文档反序列化为POCO对象。但我收到了意想不到的结果。实际上我需要为Country属性获取输出null值,但它的值为String.Empty

<?xml version="1.0"?>
<ZIP xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <ZIP>11111</ZIP>
  <CITY>111</CITY>
  <STATE>UT</STATE>
  <COUNTRY xs:Nil="true" />
</ZIP>

属性如下:

[XmlElement(IsNullable = true)]
public string ZIP { get; set; }

[XmlElement(IsNullable = true)]
public string CITY { get; set; }

[XmlElement(IsNullable = true)]
public string STATE { get; set; }

[XmlElement(IsNullable = true)]
public string COUNTRY { get; set; }

我知道我可以使用自定义属性或实现IXmlSerializable的一些钩子,但它只是一百个XML文档和POCO类中的一个。有没有通用的解决方案?

1 个答案:

答案 0 :(得分:2)

现在尝试使用正确的命名空间; xs这里应该是"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"的别名,它应该是xs:nil,而不是xs:Nil

<?xml version="1.0"?>
<ZIP xmlns:xs="http://www.w3.org/2001/XMLSchema-instance">
  <ZIP>11111</ZIP>
  <CITY>111</CITY>
  <STATE>UT</STATE>
  <COUNTRY xs:nil="true" />
</ZIP>