2010-01-18 2 views
18

나는 SO와 다른 곳에서 찾을 수있는 모든 솔루션을 시도했지만 왜 작동하지 않는지 알 수 없습니다.목록의 XmlSerializer.Deserialize

객체로 XML 문자열의 솔직한 직렬화는, 오브젝트는 하나 개의 속성을 가지고 - 목록 : 여기

[XmlTypeAttribute(AnonymousType = true)] 
public class UpdateData 
{ 
    [XmlArrayItem(ElementName = "Updates")] 
    public List<Update> Updates { get; set; } 

    public UpdateData() 
    { 
     Updates = new List<Update>(); 
    } 

} 

public class Update 
{ 
    [XmlElement(ElementName = "MemberID")] 
    public int MemberID { get; set; } 

    [XmlElement(ElementName = "AnalysisID")] 
    public int AnalysisID { get; set; } 

    [XmlElement(ElementName = "MemberName")] 
    public string MemberName { get; set; } 

    [XmlElement(ElementName = "RecordDate")] 
    public DateTime RecordDate { get; set; } 
} 

가 직렬화 코드 : 여기

private object DeserialzeXml(string xml) 
{ 
    var xmlSer = new XmlSerializer(typeof(UpdateData), new XmlRootAttribute("UpdateData")); 
    var stringReader = new StringReader(xml); 
    return xmlSer.Deserialize(stringReader); 
} 

그리고이되는 XML을 :

<?xml version="1.0" encoding="utf-8" ?> 
<UpdateData xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
    <Updates> 
     <Update> 
      <MemberID>1</MemberID> 
      <AnalysisID>1</AnalysisID> 
      <MemberName>XXXXXXXXXXXXX</MemberName> 
     </Update> 
     <Update> 
      <MemberID>1</MemberID> 
      <AnalysisID>2</AnalysisID> 
      <MemberName>YYYYYYYYYYYYY</MemberName> 
     </Update> 
     <Update> 
      <MemberID>1</MemberID> 
      <AnalysisID>3</AnalysisID> 
      <MemberName>ZZZZZZZZZZZZ</MemberName> 
     </Update> 
    </Updates> 
</UpdateData> 

이 코드는 컴파일되어 실행되고 UpdateData 유형의 객체를 반환하지만 Up dates 속성이 비어 있습니다. 어떤 아이디어? 이 귀하의 목록에있는 속성을 변경

답변

24

시도 :

[XmlArray(ElementName="Updates")] 
[XmlArrayItem(ElementName="Update")] 
public List<Update> Updates { get; set; } 
+0

감사 브라이언, 치료를 작동 ... 오프 벽에 머리를 이길. – staterium