Как указать тег элемента XML для включения всех указанных узлов XML в десериализацию - PullRequest
1 голос
/ 18 октября 2011

Я получил ответы за сериализацию своего класса по ссылке ниже

Десериализация XML с использованием элемента / атрибутов 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 также в список.

Спасибо

1 Ответ

0 голосов
/ 18 октября 2011

Добавьте этот класс в ваш проект:

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>();
    }       
}   
...