如何序列化没有值的整数元素?

时间:2017-08-21 04:24:49

标签: c# .net xml xml-serialization xmlserializer

我有一个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)属性值处理这些元素。有没有人有任何建议?

提前致谢...

1 个答案:

答案 0 :(得分:1)

当我检查一些类似的问题并回答相关问题时,我建议将FramerateDenominator类的Job更改为:

[XmlElement("framerate_denominator")]
public string _FramerateDenominator { get; set; }

[XmlIgnore]
public int? FramerateDenominator
    => !string.IsNullOrEmpty(_FramerateDenominator) 
        ? (int?) int.Parse(_FramerateDenominator) 
        : null;