我有一个XML元素,如下所示:
[XmlElement("framerate_denominator")]
public int? FramerateDenominator;
public bool ShouldSerializeFramerateDenominator() { return FramerateDenominator.HasValue; }
我的班级成员装饰如下:
using Serialization;
using System.IO;
using System.Xml.Serialization;
namespace SerializationSandbox
{
class Program
{
static void Main(string[] args)
{
// read
Job job = null;
string path = @"C:\sample_job.xml";
XmlSerializer xmlSerializer = new XmlSerializer(typeof(Job));
using (StreamReader reader = new StreamReader(path))
{
//EXCEPTION HERE
job = (Job)xmlSerializer.Deserialize(reader);
reader.Close();
}
// write
xmlSerializer = new XmlSerializer(job.GetType());
using (StringWriter textWriter = new StringWriter())
{
xmlSerializer.Serialize(textWriter, job);
var text = textWriter.ToString();
}
}
}
}
我的代码如下:
nil="true"
我在反序列化XML时遇到以下异常:
FormatException:输入字符串的格式不正确。
我不完全确定如何使用CompanyLogo(props)
属性值处理这些元素。有没有人有任何建议?
提前致谢...
答案 0 :(得分:1)
当我检查一些类似的问题并回答相关问题时,我建议将FramerateDenominator
类的Job
更改为:
[XmlElement("framerate_denominator")]
public string _FramerateDenominator { get; set; }
[XmlIgnore]
public int? FramerateDenominator
=> !string.IsNullOrEmpty(_FramerateDenominator)
? (int?) int.Parse(_FramerateDenominator)
: null;