使用xml文件进行反序列化而非序列化

时间:2012-08-31 17:57:50

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

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

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

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

我可以将其反序列化为具有IEnumberable的Object人吗?或者我是否需要使用IEnumerable属性序列化Object Person然后反序列化?

1 个答案:

答案 0 :(得分:0)

当然,您可以反序列化尚未通过序列化生成的XML,您只需确保生成或编写具有拟合属性的正确类结构以匹配XML结构。我不确定IEnumerable是否可行,但可以使用List<T>T[]。以下是List<T>

的示例
            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