簡體   English   中英

XmlSerializer.Deserialize List <>項目

[英]XmlSerializer.Deserialize on a List<> item

我已經嘗試了所有可以在SO和其他地方找到的解決方案,但似乎無法弄清楚為什么這不起作用。

將XML字符串直接反序列化為對象,該對象具有一個屬性 - 一個List:

[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類型的對象,但Updates屬性為空。 有任何想法嗎?

嘗試將列表中的屬性更改為:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM