Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 反序列化空值_C#_Xml_Xmlserializer - Fatal编程技术网

C# 反序列化空值

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>

我正在尝试将xml文件序列化到一个类中,其中一个元素可以为空

XML文件

  <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)
     }
 }