.NET Xml序列化程序可选属性

7

给定以下代码...

[XmlType("Field")]
public class SearchField
{
    [XmlAttribute("alias")]
    public string Alias;

    [XmlAttribute("entity")]
    public string Entity;
}

Alias是我们的可选字段,但当xml中缺少“alias”属性时,反序列化程序会抛出异常。如何使其可选?是否需要模式?

1个回答

13

很奇怪,因为以下程序对我来说很好用,没有任何异常:

using System;
using System.IO;
using System.Xml;
using System.Xml.Serialization;

[XmlType("Field")]
public class SearchField
{
    [XmlAttribute("alias")]
    public string Alias;

    [XmlAttribute("entity")]
    public string Entity;
}

class Program
{
    static void Main()
    {
        using (var reader = new StringReader("<Field entity=\"en\" />"))
        {
            var serializer = new XmlSerializer(typeof(SearchField));
            var s = (SearchField)serializer.Deserialize(reader);
            Console.WriteLine(s.Alias);
            Console.WriteLine(s.Entity);
        }
    }
}

正如您所看到的,在输入XML中省略了alias属性,但反序列化时没有出现问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接