XmlSerializer.Deserialize System.Array

时间:2010-06-08 17:23:22

标签: c# .net xml serialization

        reader.MoveToContent();
        var xs = new XmlSerializer(typeof(DerivedTypePackage<ScriptExecutionTask>[]));
        var packagedTasks = xs.Deserialize(reader.ReadSubtree()) as DerivedTypePackage<ScriptExecutionTask>[];
        reader.ReadEndElement();

在调用xs.Deserialize(reader.ReadSubtree())之后,读者指向ArrayOfDerivedTypePackageOfScriptExecutionTask的结束元素,并返回一个数组。似乎工作正常,除了数组只包含一个元素。检查XML,有多个DerivedTypePackageOfScriptExecutionTask个节点,但似乎它们被跳过了。为什么呢?

1 个答案:

答案 0 :(得分:0)

在不查看所有代码或XML的情况下,我认为问题在于ReadSubtree()只会读取第一个匹配的元素。所以,正如你所说它似乎工作得很好,除了数组只包含一个元素。 one元素是否是XML文档中的第一个匹配元素?如果是这样,我认为这是你的问题。

以下MSDN文档链接中的示例显示了ReadSubtree()方法的工作原理。你会注意到他们首先读取一个节点,然后跳过然后ReadSubtree()方法将读取他们的示例xml上的第二个节点,而不再是。

ReadSubtree() on MSDN

希望这会帮助你!