我可以使用反序列化从xmls生成不是由序列化生成的对象吗?
说,如果我有像这样的xml文件
<Person>
<Cop name ="n1" />
<Cop name ="n2" />
</Person>
我可以将其反序列化为具有IEnumberable的Object人吗?或者我是否需要使用IEnumerable属性序列化Object Person然后反序列化?
答案 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