【问题标题】: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<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