我的 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 接口(interface)的情况下完成此操作,并且我想使用列表来存储 Subject 值(不是我知道的字符串 []有可能是我使用 XmlElement 属性)。
最佳答案
用 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>"
关于c# - 是否可以使用 .net 提供的序列化属性将 xml 反序列化为 List 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2164128/