我试图将xml反序列化为类对象,但是遇到了这种XML结构的问题 我的XML架构就像这样
<themes>
<theme>
....
**<title>abc</title>
<id>123</id>**
....
<siblings>
<title>abc</title>
<id>123</title>
<title>prr</title>
<id>345</id>
</siblings
</theme>
<theme>
.....
**<title>ste</title>
<id>45</id>**
....
<siblings>
<title>abc</title>
<id>123</title>
<title>pqr</title>
<id>347</id>
</siblings
....
</theme>
</themes>
我正在使用两个类:
[XmlRoot("theme")]
public class ThemeList
{
[XmlElement("title")]
public string title { get; set; }
[XmlElement("id")]
public string id { get; set; }
[XmlElement("siblings")]
public List<Siblings> siblings { get; set; }
}
public class Siblings
{
[XmlElement("id")]
public string id { get; set; }
[XmlElement("title")]
public string title { get; set; }
}
很抱歉没说清楚。 以下是我的序列化代码:
public List<ThemeList> getItemDetails(string url)
{
HttpService _httpService = new HttpService();
XDocument xml = _httpService.getXML(url);
List<ThemeList> themeList = ConvertCategoryXmlToList(xml).ToList();
return themeList;
}
private List<ThemeList> ConvertCategoryXmlToList(XDocument xml)
{
List<ThemeList> list = new List<ThemeList>();
var query = xml.Descendants("theme")
.Select(node => node.ToString(SaveOptions.DisableFormatting));
foreach (var categoryXml in query)
{
list.Add(Serealizer.DeserializeObject<ThemeList>(categoryXml));
}
return list;
}
对象列表List<ThemeList>
的{{1}}也包含object
的元素。让我以更好的方式解释它。
从上面的XML我想创建一个包含<siblings><title></title></siblings>
元素信息的对象列表,即给定XML模式中的元素<title></title>
并排除任何**
在<title></title>
内。
我打电话给<siblings></siblings>
并在其中打印标题时我现在得到的清单如下。
object.getItemsDetails("...")
更具体和清晰: 我真正想要的是一个包含以下内容的列表:
Title: abc
Title:abc
Title:prr
Title:ste
Title:abc
Title:pqr