在我的情况下,我有一个XMLTAG <phrase>
,它可以包含一个或多个XMLTAG <q>
,但它们可以以随机顺序出现在phraseTag值中。
这是xmlcode的一个例子:
<phrase level="1">
Where
<q>are</q>
<subject>you</subject>
<q>going?</q>
</phrase>
对于反序列化我正在使用这个类:
[XmlRoot("phrase")]
public class Phrase
{
public Phrase()
{
this.Quoted = new List<string>();
}
[XmlAttribute("level")]
public int Level { get; set; }
[XmlElement("subject")]
public string Subject { get; set; }
[XmlText]
public string Value { get; set; }
[XmlElement("q")]
List<string> Quoted { get; set; }
}
我的扩展方法是:
public static T Deserialize<T>(this XElement xElement)
{
try
{
XmlSerializer xmlSerializer = new XmlSerializer(typeof(T));
return (T)xmlSerializer.Deserialize(xElement.CreateReader());
}
catch (Exception)
{
throw;
}
}
当我反序列化XML文档时,所有类成员都被成功序列化:
Phrase.Level = 1
Phrase.Subyect = "you"
Phrase.Value = "Where"
如何反序列化<q>
代码?
我尝试使用XmlArrayAttibute
和XmlArrayItemAttibute
,但我没有此列表的成员(例如QTags)。
答案 0 :(得分:0)
您需要XmlElement
属性:)
[XmlRoot("phrase")]
public class Phrase
{
[XmlElement("q")]
public List<string> q { get; set; }
[XmlAttribute("level")]
public int Level { get; set; }
[XmlElement("subject")]
public string Subject { get; set; }
[XmlText]
public string Value { get; set; }
}