将多个List <t>对象序列化到同一XML文件C#中

时间:2017-11-25 13:52:13

标签: c# xml serialization

大家好我有三个包含同一类对象的列表。 例如,以下是我的列表:

    List<Course> courselvl4 = new List<Course>();
    List<Course> courselvl5 = new List<Course>();
    List<Course> courselvl6 = new List<Course>();

我想知道是否有可能将每个列表序列化到同一个XML文件中并反序列化回列表。谢谢。 我试过寻找答案,但无法在任何地方找到答案。 请直接回答。

1 个答案:

答案 0 :(得分:0)

如果您想以适当的容量初始化列表,可以使用此功能:

Int32 capacity = courselvl4.Count + courselvl5.Count + courselvl6.Count;

List<Course> courses = new List<Course>(capacity);
courses.AddRange(courselvl4);
courses.AddRange(courselvl5);
courses.AddRange(courselvl6);

可替换地:

List<Course> courses = courselvl4
                 .Concat(courselvl5)
                 .Concat(courselvl6)
                 .ToList();

然后去找:

SerializeCourses("CoursesList",courses);

private static XDocument SerializeCourses(String rootElement, List<Course> courses)
{
    XDocument doc = new XDocument();

    using (XmlWriter writer = doc.CreateWriter())
    {
        writer.WriteStartElement(rootElement);

        foreach (Course course in courses)
            new XmlSerializer(typeof(Course)).Serialize(writer, course);

        writer.WriteEndElement();
    }

    return doc;
}