c# - 是否可以使用 .net 提供的序列化属性将 xml 反序列化为 List 对象?

标签 c# serialization list

我的 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/

相关文章:

c++ - 如何将迭代器类型转换为其原始结构

c# - 永久和计划任务的最佳设计

c# - 在类声明中使用 new 关键字

C# - 如何测试扩展方法?

java - 在 JSON 序列化之前更改对象

java - 如何使用 RestTemplate 反序列化嵌套列表?

c# - 匿名函数和局部变量

java - 扩展可序列化的地理点 - 无法读回对象

list - aVdin 8 中的样式列表选择

python - 为什么我会收到此列表索引错误?