我有xml输入,看起来像(例如使用简化版):
<Student>
<Subject> History </Subject>
<Subject> English </Subject>
</Student>
有没有办法让上面的xml反序列化为类如下的对象:
[Serializable]
[XmlRoot(ElementName = "Student", Namespace="")]
class Student
{
public Student()
{
Subject = new List<string>();
}
public List<string> Subject {get;set;}
}
注意我试图找出是否可以在不必实现IXmlSerializable接口的情况下完成此操作,并且我想使用列表来存储 Subject 值(不是我知道的字符串[]我可以使用XmlElement属性。
答案 0 :(得分:4)
使用XmlArrayAttribute装饰Subject属性。
[XmlArray]
public List<string> Subject { get; set; }
如果您需要省略Subject元素并将Subject条目直接放在Student下面,您只需使用[XmlElement]属性:
[XmlElement]
public List<string> Subject { get; set; }
使用Student类对其进行序列化会产生与此类似的输出:
<?xml version=\"1.0\" encoding=\"utf-16\"?>
<Student xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"
xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">
<Subject>History</Subject>
<Subject>English</Subject>
</Student>"