2010-06-08 3 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을 확인하면 노드가 여러 개 있는데, 건너 뛴 것처럼 보입니다. 왜?XmlSerializer.Deserialize System.Array

답변

0

코드 나 XML을 모두 보지 않고도 ReadSubtree()은 일치하는 첫 번째 요소 만 읽게된다는 사실이 문제라고 생각합니다. 그래서, 당신이 말한대로 잘 작동하는 것만 제외하고, 배열에는 하나의 요소 만 포함됩니다. 한 요소가 XML 문서의 첫 번째 일치 요소일까요? 그렇다면 이것이 당신 문제라고 생각합니다.

다음 MSDN 설명서 링크의 예는 ReadSubtree() 방법의 작동 방식을 보여줍니다. 처음 노드를 읽은 다음 건너 뛰면 ReadSubtree() 메서드는 예제 xml과 두 번째 노드에서 두 번째 노드를 읽습니다.

ReadSubtree() on MSDN

희망이 당신을 도와줍니다!

관련 문제