C# 反序列化空值
我正在尝试将xml文件序列化到一个类中,其中一个元素可以为空 XML文件C# 反序列化空值,c#,xml,xmlserializer,C#,Xml,Xmlserializer,我正在尝试将xml文件序列化到一个类中,其中一个元素可以为空 XML文件 <Status StatusId="1"> <StatusName>Not inspected</StatusName> <Acute></Acute> </Status> <Status StatusId="2"> <StatusName>Acute</StatusName>
<Status StatusId="1">
<StatusName>Not inspected</StatusName>
<Acute></Acute>
</Status>
<Status StatusId="2">
<StatusName>Acute</StatusName>
<Acute>1</Acute>
</Status>
我试过int吗?和
[xmlement(IsNullable=true)]
但任何人都不知道如何在空元素中读取而不会出现任何错误。尝试使用int?
。整数不能包含null,可为null的整数(int?s)可以
编辑:在回复之前,请注意阅读所有内容
也许您的问题是XML中实际上没有
,而是有一个空值,该值不转换为任何int?尝试从XML中删除
行,并将属性更改回int 我猜这不是正确的方法,但我过去处理过从string
到int
的转换。大致:
private int _acute = 0; // or assign to some more appropriate default
[XmlIgnore]
public int Acute
{
get { return _acute; }
set
{
_acute = value;
NotifyPropertyChanged("Acute");
}
}
// I kept mine as public but may be able to hide it at a minimal level that
// serialization still works.
[XmlElement(ElementName = "Acute")]
public string SerializedAcute
{
get { return _acute.ToString(); }
set
{
Int32.TryParse(value, out _acute)
}
}
如果你有很多这样的问题,可能会有点难看。你会遇到什么错误?在将_acute和acute定义为int时出现了什么错误?我只是在使用int时在xml文档中出现了错误?元素为空。如果我给元素添加值,它会正常工作。这是错误吗?“xml文档中的错误”?抛出了什么异常?也许它有一个属性告诉您XML中的错误在哪里。XmlSerializer将可为Null的值类型视为可为Null的,即使您未明确指定该类型。很抱歉,我不能再像epxlicit那样了,我正在使用Prism,错误被捕获为带输出的CompositeExcelOption。输入字符串的格式不正确。结果:XML文档(6,5)中出现错误。您可能希望将标题更改为反序列化null值。并且null不会保存为空元素。应该是
谢谢你解决了我的问题,int?和。错误源于数据集的错误xslt转换。现在,我只需要弄清楚如何使用xslt生成xml文档而不获取元素丢失的时间,还需要将属性[xmlement(ElementName=“Acute”)]
放到serializedCute
中。我一直在阅读代码,并将其与我的代码进行比较,但无法找出我遗漏了什么。
private int _acute = 0; // or assign to some more appropriate default
[XmlIgnore]
public int Acute
{
get { return _acute; }
set
{
_acute = value;
NotifyPropertyChanged("Acute");
}
}
// I kept mine as public but may be able to hide it at a minimal level that
// serialization still works.
[XmlElement(ElementName = "Acute")]
public string SerializedAcute
{
get { return _acute.ToString(); }
set
{
Int32.TryParse(value, out _acute)
}
}