反序列化时,XmlSerializer不会获取某些数组

时间:2012-03-18 06:17:53

标签: c# .net xmlserializer

到目前为止,XmlSerializer相当不错,但它似乎打破了一个似乎并不太复杂的情况。这是我的XML的结构,而不是真正的东西,但我认为我已经捕获了基本结构):

<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的类型未知。我不确定为什么会这样。有几个集合,其中一个集合包含一个本身就是集合的元素。这种情况是否真的需要编写我自己的反序列化器,或者我只是缺少一个简单的修复程序?

0 个答案:

没有答案