繁体   English   中英

XmlSerializer.Deserialize System.Array

[英]XmlSerializer.Deserialize System.Array

        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节点,但似乎它们被跳过了。 为什么?

在没有查看所有代码或XML的情况下,我相信问题在于ReadSubtree()仅读取匹配的第一个元素。 因此,正如您所说,它似乎工作正常,只是该数组仅包含一个元素。 一个元素将成为XML文档中的第一个匹配元素吗? 如果是这样,我认为这是您的问题。

以下MSDN文档链接中的示例显示了ReadSubtree()方法的工作方式。 您会注意到他们首先读取一个节点,然后向下跳转,然后ReadSubtree()方法将读取其示例xml上的第二个节点,仅此而已。

MSDN上的ReadSubtree()

希望这可以帮助你!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM