San*_*der 27 c# xml xml-serialization c#-4.0
我有4个小类来从xm轮询中反序列化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>
Run Code Online (Sandbox Code Playgroud)
问题类看起来像这样:
[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
}
Run Code Online (Sandbox Code Playgroud)
好的,所以AnswerItem节点的值,这也是我想要得到的.我可以很容易地不使用AnswerItem类,只使用String类型的XmlArray AnswerItems并将值放在数组中,但之后我将丢失AnswerItem的Id属性.
rsb*_*rro 65
在AnswerItem,调用属性Value并使用XmlText属性标记它.此设置将导致将元素中XmlSerializer的文本读AnswerItem入Value属性.
[Serializable()]
public class AnswerItem
{
[XmlAttribute("Id")]
public Guid QuestionId { get; set; }
[XmlText]
public string Value { get; set; }
}
Run Code Online (Sandbox Code Playgroud)