2013-03-21 89 views
2

我要反序列化下面的XML:XML反序列化問題爲XMLArrayItem

<section> 
<class_id>Cls101</class_id> 
<sect_no>1</sect_no> 
<class_section>class section</class_section> 
<meet_days> 
    <day>M</day> 
    <day>T</day> 
    <day>W</day> 
</meet_days> 
</section> 

對於那些我已經創建瞭如下的類:

[Serializable] 
[XmlRoot("section")] 
public class Section 
{ 
    [XmlElement("class_id")] 
    public string ClassId { get; set; } 

    [XmlElement("sect_no")] 
    public string SectionNo { get; set; } 

    [XmlElement("class_section")] 
    public string ClassSection { get; set; } 

    [XmlArray("meet_days")] 
    [XmlArrayItem("day")] 
    public List<Days> MeetDays { get; set; } 
} 

[Serializable] 
public class Days 
{ 
    [XmlElement("day")] 
    public string Day { get; set; } 
} 

在反序列化對象我得到Daynull所有3排。

我在這裏錯過了什麼?

回答

1

因爲Day只有一個屬性,它是一個字符串,考慮刪除Day類和改變Section類閱讀:

[XmlArray("meet_days")] 
[XmlArrayItem("day")] 
public List<string> MeetDays { get; set; } 

這樣一來,男, T和W值被映射到字符串而不是Day類中的字符串。

+0

謝謝史蒂夫。我早些時候嘗試過,它的工作原理。但我不需要字符串。我需要將該值映射到Day屬性。 – 2013-03-21 16:46:09

0

您沒有正確使用XmlArrayItem。它指定允許在反序列化中作爲項目的類型。

嘗試:

[XmlArrayItem(typeof(Days))]