<RootNode>
<SomeNodeNames>
<SomeNodeName>
<anelement>avalue</anelement>
</SomeNodeName>
</SomeNodeNames>
<TheseOnesDontWork>
<ThisOneDoesntWork>
<elementWhichDoesWork>8</elementWhichDoesWork>
<collection1>
<itemrow>
<text>text.......</text>
</itemrow>
<itemrow>
<text>more text........</text>
</itemrow>
</collection1>
</ThisOneDoesntWork>
</TheseOnesDontWork>
</CutsceneData>
因此,我有许多对应于这些元素的类。
public class RootNode
{
public SomeNodeName[] SomeNodeNames;
public ThisOneDoesntWork[] TheseOnesDontWork;
}
public class ThisOneDoesntWork
{
public int elementWhichDoesWork;
public itemrow[] collection1;
}
public class itemrow
{
public string text;
}
XmlSerializer调用非常简单。
XmlSerializer serializer = new XmlSerializer(typeof(RootNode), attrOverrides);
FileStream stream = File.Open("filename.xml", FileMode.Open);
RootNode obj = (RootNode)serializer.Deserialize(stream);
因此,正确加载,除了根本没有创建'collection1'。我放入一个UnknownNode事件处理程序,果然,它会出现一个标志,表示itemrow的类型未知。我不确定为什么会这样。有几个集合,其中一个集合包含一个本身就是集合的元素。这种情况是否真的需要编写我自己的反序列化器,或者我只是缺少一个简单的修复程序?