您能帮我找到反序列化包含空标记的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'/>