2010-01-18 10 views
18

मैंने एसओ और अन्य जगहों पर मिलने वाले सभी समाधानों का प्रयास किया है, लेकिन ऐसा नहीं लगता कि यह क्यों काम नहीं कर रहा है।XmlSerializer. सूची पर डिसेरियलाइज करें <> आइटम

[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; } 
} 

यहाँ deserialize कोड है:: यहाँ

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> 

यह कोड संकलित करता है और चलाता है, और अद्यतनडेटा प्रकार का ऑब्जेक्ट देता है, लेकिन ऊपर तिथियां संपत्ति खाली है। कोई विचार?

उत्तर

24

यह करने के लिए अपनी सूची पर गुण बदलने का प्रयास करें:

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

धन्यवाद ब्रायन, एक दीवार के खिलाफ मेरे सिर को हरा करने के लिए एक इलाज काम करता है ... बंद। – staterium

संबंधित मुद्दे