2011-10-18 15 views
1

我得到的答案在下面的鏈接如何指定XML元素標記包括所有在反序列化

XML de-serialization using xml element/attributes

序列化我班的指定XML節點,但我必須包括所有元素,而不論其在XML中的位置。

XML:

 <form> 
    <question id="QnA"> 
     <answer>AnswerforA</answer> 
    </question> 
    <question id="QnB"> 
     <answer>AnswerforB</answer> 
    </question> 
    <question id="QnC"> 
     <answer>AnswerforC1</answer> 
    </question> 
    <section> 
     <question id="Qnd"> 
      <answer>Answerford</answer> 
     </question> 
     </section> 
    </form> 

的.cs:

[XmlRoot("form")] 
    public class Form 
    { 
     [XmlElement("question")] 
     public List<Question> Questions { get; set; } 

     public Form() 
     { 
       Questions = new List<Question>(); 
     } 
    } 
    public struct Question 
    { 
     [XmlAttribute("id")] 
     public string ID { get; set; } 

     [XmlElement("answer")] 
     public string Answer { get; set; } 
    } 

在此,我可以得到三個要素QNA,QNB,QNC的問題清單。

如何指定XML元素,使其包含所有問題元素,即將QnD元素也包含在列表中。

感謝

回答

0

這個類添加到項目中:

public class Section 
{ 
    [XmlElement("question")] 
    public List<Question> Questions {get; set;} 

    public Section() 
    { 
    Questions = new List<Question>(); 
    } 
} 

的修改Form類是這樣的:

[XmlRoot("form")]  
public class Form  
{  
    [XmlElement("question")]  
    public List<Question> Questions { get; set; } 

    [XmlElement("section")]  
    public List<Section> Sections {get; set;} 

    public Form()  
    {  
      Questions = new List<Question>();  
      Sections = new List<Section>(); 
    }  
}