您能帮我找到反序列化包含空标记的XML文件的解决方案吗?
示例如下:

<Report>
    <ItemsCount></ItemsCount>
</Report>

我想把它反序列化为类的对象,比如:
public class Report{
    public int? ItemsCount { get;set;}
}

我在反序列化中使用的XML架构是:
[XmlRoot]
public partial class Report
{
   private int? itemsCount;

   [XmlElement(IsNullable = true)]
   public int? ItemsCount {
      get
      {
           return itemsCount;
      }
      set
      {
           itemsCount = value;
      }
}

如果itemsunt标记完全丢失,但如果它存在并且同时为空,那么它可以很好地工作,在这种情况下,它会抛出关于该标记位于xml中的行的异常。
我在试图找到解决方案时看到了很多链接,但都没有成功。
而且,我不想忽略所有情况下的标记,我想得到一个空值,而不是空值。

最佳答案

XmlSerializer正在尝试将标记的string.Empty值转换为整数,但失败。按如下所示更改属性以将数据类型转换为字符串:

[XmlElement]
public string ItemsCount {
      get
      {
           return itemsCount;
      }
      set
      {
           itemsCount = value;
      }

在上述情况下,这会将属性Itemscount设置为空。
对于上述属性的null值,XML应如下所示:
<ItemsCount xs:Nil='true'/>

10-06 06:21