0

我有以下xml结构

<root>
 <title>List</title>
 <units>Total Units: 79.0</units>
 <sesgrps>
   <sesgrp>
     <classes>
       <class>
         <subj_area_name>C# language</subj_area_name>
         <class_name>C# Class</class_name>
       </class>
       <class>
         <subj_area_name>VB language</subj_area_name>
         <class_name>VB Class</class_name>
       </class>
       <class>
         <subj_area_name>F# language</subj_area_name>
         <class_name>F# Class</class_name>
       </class>
     </classes>
   </sesgrp>
</sesgrps>

为此,我创建了如下类:

[Serializable]
[XmlRoot("root")]
public class Data
{
    [XmlElement("title")]
    public string Title { get; set; }

    [XmlElement("units")]
    public string Units { get; set; }

    [XmlArray("sesgrps")]
    [XmlArrayItem("sesgrp")]
    public List<SessionGroup> SessionGroups { get; set; }
}

[Serializable]
public class SessionGroup
{
    [XmlArray("classes")]
    [XmlArrayItem("class")]
    public List<Class> Classes { get; set; }
}

[Serializable]
public class Class
{
   .....................
   .....................
}

当我反序列化时,我只得到一个 Class 项目而不是Classes 集合中的 3 个类项目。

4

1 回答 1

0

我刚刚尝试了以下代码:

var file = new FileStream("Input.txt", FileMode.Open);

var serializer = new XmlSerializer(typeof(Data));
var item = (Data)serializer.Deserialize(file);

使用您的输入 XML 数据和以下Class类声明:

[Serializable]
public class Class
{
    [XmlElement("subj_area_name")]
    public string Area { get; set; }

    [XmlElement("class_name")]
    public string Name { get; set; }
}

一切都很好。结果项有 1 个带有属性的SessionGroup实例SessionGroups,其中包含 3 个属性Class内的对象Classes

在此处输入图像描述

所以我不得不说 -XmlSerializer或者类声明在这里不是问题。

于 2013-04-02T17:08:42.340 回答