【问题标题】:Deserialization with xml files not from serialization使用不是序列化的 xml 文件进行反序列化
【发布时间】:2012-08-31 17:57:50
【问题描述】:

我可以使用反序列化从不是由序列化生成的 xml 中生成对象吗?

说,如果我有这样的 xml 文件

<Person>
  <Cop name ="n1" />
  <Cop name ="n2" />
</Person>

我可以将其反序列化为具有 IEnumberable 的对象人员吗?还是我需要用 IEnumerable 属性序列化 Object Person 然后反序列化?

【问题讨论】:

    标签: xml xml-serialization linq-to-xml


    【解决方案1】:

    当然你可以反序列化没有通过序列化生成的 XML,你只需要确保你生成或编写了正确的类结构,并带有合适的属性来匹配 XML 结构。我不确定IEnumerable 是否可行,但可以使用List&lt;T&gt;T[]。以下是带有List&lt;T&gt; 的示例:

                string xml = @"<Person>
      <Cop name =""n1"" />
      <Cop name =""n2"" />
    </Person>";
    
    
                XmlSerializer ser = new XmlSerializer(typeof(Person));
    
                Person p1 = (Person)ser.Deserialize(new StringReader(xml));
    
                foreach (Cop cop in p1.Cops)
                {
                    Console.WriteLine(cop.Name);
                }
            }
        }
    
    
    
        public class Person
        {
            [XmlElement(ElementName="Cop")]
            public List<Cop> Cops { get; set; }
        }
    
        public class Cop
        {
            [XmlAttribute(AttributeName="name")]
            public string Name { get; set; }
        }
    

    输出

    n1
    n2
    

    【讨论】:

      猜你喜欢
      • 2016-03-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-03
      • 1970-01-01
      • 1970-01-01
      • 2021-12-13
      • 2021-05-08
      相关资源
      最近更新 更多