【问题标题】:.NET Xml serializer optional attributes.NET Xml 序列化程序可选属性
【发布时间】:2011-11-01 20:53:58
【问题描述】:

给定以下代码...

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

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

别名对我们来说是一个可选字段,但是当 xml 中缺少“别名”属性时,反序列化程序会抛出异常。你如何使它成为可选的?是否需要架构?

【问题讨论】:

    标签: c# .net xml xml-serialization


    【解决方案1】:

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

    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 属性,但反序列化没有问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-03-25
      • 2015-05-30
      • 1970-01-01
      • 2013-11-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多