2010-06-08 51 views
1
 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節點,但似乎他們正在跳過。爲什麼?XmlSerializer.Deserialize的System.Array

回答

0

不看所有的代碼或XML我相信問題是,ReadSubtree()將只讀取匹配的第一個元素。所以,如你所說,似乎工作正常,除了數組只包含一個元素。這一個元素是XML文檔中的第一個匹配元素嗎?如果是這樣,我認爲這是你的問題。

以下MSDN文檔鏈接中的示例顯示了ReadSubtree()方法的工作原理。您會注意到他們首先讀取一個節點,然後跳過,然後ReadSubtree()方法將讀取其示例xml中的第二個節點,僅此而已。

ReadSubtree() on MSDN

希望這可以幫助你!