我有需要反序列化的XML文件。我使用Visual Studio中的XSD工具来创建c#目标文件。生成的类会对文件进行反序列化,除非不是我需要的方式。
如果有任何帮助可以解决这个问题,我将不胜感激。
名为“data”的子元素应该是父元素“task”的属性。
XML的简短示例如下:
<task type="Nothing" id="2" taskOnFail="false" >
<data value="" name="prerequisiteTasks" />
<data value="" name="exclusionTasks" />
<data value="" name="allowRepeats" />
<task type="Wait for Tasks" id="10" taskOnFail="false" >
<data value="" name="prerequisiteTasks" />
<data value="" name="exclusionTasks" />
<data value="" name="allowRepeats" />
</task>
<task type="Wait for Tasks" id="10" taskOnFail="false" >
<data value="" name="prerequisiteTasks" />
<data value="" name="exclusionTasks" />
<data value="" name="allowRepeats" />
</task>
</task>
我试图反序列化的类定义是以下形式:
public class task {
public string prerequisiteTasks {get;set;}
public string exclusionTasks {get;set;}
public string allowRepeats {get;set;}
[System.Xml.Serialization.XmlElementAttribute("task")]
public List<task> ChildTasks {get;set;}
}
子任务很好,但生成的文件将'data'元素放入数据[]数组中,而不是作为我需要的任务类的命名成员。
答案 0 :(得分:1)
C#无法反序列化通用列表。因此,您需要做的是定义如何反序列化泛型集合数据。为了实现你必须实现GetObjectData(SerializationInfo info,StreamingContext context)。
帮助查看本文。有一个示例代码: