在反序列化XML列表时忽略元素

时间:2013-06-05 14:01:07

标签: c# xml xml-serialization

我试图将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

0 个答案:

没有答案