XML反序列化:将缺少的元素反序列化为null属性值

时间:2011-08-03 13:46:02

标签: .net xml deserialization

我的xml文档有一个可以包含多个子元素的元素。在我的课堂上,我将该属性声明为:

[XmlArray("files", IsNullable = true)]
[XmlArrayItem("file", IsNullable = false)]
public List<File> Files { get; set; }

在反序列化期间,如果缺少<files>元素,我希望Files属性为 null 。但是,会发生的事情是将文件反序列化为空的List对象。我该如何预防呢?

1 个答案:

答案 0 :(得分:3)

实现这一目标的一个选项是封装列表:

public class Foo
{
    [XmlElement("files", IsNullable = true)]
    public FooFiles Files { get; set; }

}
public class FooFiles
{
    [XmlElement("file", IsNullable = false)]
    public List<File> Files { get; set; }
}

如果没有Foo.Files元素,null将为<files/>