【发布时间】:2014-04-04 18:18:11
【问题描述】:
我有一个自动生成的 xml 文件,格式如下。
<?xml version="1.0"?>
<School>
<Classes numberOfFields="5">
<Class name="10" dataType="double">
<Section value="A"/>
<Section value="B"/>
<Section value="C"/>
</Class>
<Class dataType="double"/>
<Class dataType="double"/>
<Class dataType="double"/>
<Class dataType="double"/>
</Classes>
</School>
我使用“XmlDeserializer”反序列化如下
School schoolResult = (School)xmlSerializer.Deserialize(stream);
XmlRootElement 在“Classes”标签下包含一个“Class”集合,并且每个“Class”都将包含“Section”集合。
在 C# 中,我已经声明这样将“类”反序列化为类列表。
[XmlArray("Classes")]
[XmlArrayItem("Class", typeof(Class))]
public List<Class> Classes {};
现在为了进一步将 Class 反序列化为部分列表,我添加了如下代码。
[XmlArray("Class")]
[XmlArrayItem(ElementName="Section")]
public List<Section> ClassSections {};
我的问题是我无法正确获取部分列表值。因为我在第一部分中将“类”作为类名,在第二部分中我提到了与数组元素相同的“类”。那么任何人都可以告诉我如何使用“XmlSerializer”正确反序列化我的“School”对象以正确获取所有值。
注意:我不能在“类”下有一个像 “Sections”这样的数组根标签。因为我的 xml 文档是自动生成的。我无法指定自己的格式。
谢谢...
【问题讨论】:
标签: c# .net xml xml-parsing xml-deserialization