gpt4 book ai didi

c# - 反序列化没有列表根成员的 XElement 列表

转载 作者:太空宇宙 更新时间:2023-11-03 15:52:14 26 4
gpt4 key购买 nike

在我的例子中,我有一个 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>标签?我试过使用 XmlArrayAttibuteXmlArrayItemAttibute但我没有此列表的成员(例如 QTags)。

最佳答案

您需要 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; }
}

关于c# - 反序列化没有列表根成员的 XElement 列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25340909/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com