如何使用asp.net序列化使用值和属性反序列化xml节点
我有4个小类来从一个xml轮询中反序列化xml,到可用的类来构建轮询。
现在,我知道如何从类中设置属性,以匹配xml中的某个属性或元素,如果该元素只是一个简单的字符串,但如果该元素也具有如下例所示的属性,该怎么办?
3 2 5
问题类看起来像这样:
[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类,只使用String类型的XmlArray AnswerItems并将值放在数组中,但之后我会丢失AnswerItem的Id属性。
在AnswerItem
,创建一个名为Value
的属性,并使用XmlText
属性对其进行标记。 此设置将使XmlSerializer
将AnswerItem
元素中的文本读入Value
属性。
[Serializable()] public class AnswerItem { [XmlAttribute("Id")] public Guid QuestionId { get; set; } [XmlText] public string Value { get; set; } }