У меня есть 4 небольших класса, чтобы десериализовать xml от входящего опроса xml до пригодных для использования классов для создания опроса.
Теперь я знаю, как установить свойство из класса, чтобы соответствовать определенному атрибутуили элемент в xml, и если этот элемент является простой строкой, что легко, но что, если элемент также имеет атрибут, как в следующем примере?
<Questions>
<Question id="a guid">
<AnswerItems>
<AnswerItem Id="a guid">3</AnswerItem>
<AnswerItem Id="a guid">2</AnswerItem>
<AnswerItem Id="a guid">5</AnswerItem>
</AnswerItems>
</Question>
</Questions>
, класс вопроса будет выглядеть следующим образом:
[Serializable()]
public class Question
{
[XmlAttribute("Id")]
public Guid QuestionId { get; set; }
[XmlArray("AnswerItems")]
[XmlArrayItem("AnswerItem", typeof(AnswerItem))]
public AnswerItem[] AnswerItems { get; set; }
}
[Serializable()]
public class AnswerItem
{
[XmlAttribute("Id")]
public Guid QuestionId { get; set; }
// how do i fetch the value of this node?
// its not a XmlElement and it's not an XmlValue
}
Хорошо, так что значение узла AnswerItem, это то, что я тоже хочу получить.я мог бы легко не использовать класс AnswerItem, а просто использовать XIlArray AnswerItems типа String и поместить значения в массив, но тогда я бы потерял атрибут Id AnswerItem.