C#按类别名称对xml进行排序,并将其显示在列表视图中

时间:2014-10-31 09:32:20

标签: c# xml sorting

我想用选定的类别(来自组合框)对我的“Feed”进行排序,然后在列表视图中显示具有特定类别的Feed。

-XML file =我想选择值为“Category”

的Feed
<?xml version="1.0" encoding="utf-8"?>
<ListOfFeeds xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Id>00000000-0000-0000-0000-000000000000</Id>
  <FeedList>
    <Feed>
      <Url>http://sweclockers.libsyn.com/rss</Url>
      <Id>94beedee-d528-4831-9f71-8c1db622d12e</Id>
      <Category>IT</Category>
      <Namn>Sweclocker Podcast</Namn>
      <Items>
        <FeedItem>
          <Id>2f55814a3396a36530c39ffe63efb6b1</Id>
          <Title>#34 - Det handlar om E3</Title>
          <Link>http://traffic.libsyn.com/sweclockers/sweclockers_podcast_20140613.mp3</Link>
        </FeedItem>
        <FeedItem>
          <Id>5e01e8aa5dd90ba31137871ecef5ffe7</Id>
          <Title>#33 - Spelspecial</Title>
          <Link>http://traffic.libsyn.com/sweclockers/sweclockers_podcast_20140418.mp3</Link>
        </FeedItem>
        ...
      </Items>
    </Feed>
    <Feed>
      <Url>http://tyngreradio.libsyn.com/rss</Url>
      <Id>db15f1da-004d-47f1-8a97-e1ae7602f640</Id>
      <Category>Training</Category>
      <Namn>Tyngre Radio</Namn>
      <Items>
        <FeedItem>
          <Id>eea6ee3e9377589e25c2c4135aa76f09</Id>
          <Title>Avsnitt 15: Nicklas Neuman</Title>
          <Link>http://traffic.libsyn.com/tyngreradio/tyngre_radio_avsnitt_15.mp3</Link>
        </FeedItem>
        <FeedItem>
          <Id>08dc684ab30117c77905bee2f15d0a27</Id>
          <Title>Avsnitt 14: Caroline Aspenskog</Title>
          <Link>http://traffic.libsyn.com/tyngreradio/tyngre_radio_avsnitt_14.mp3</Link>
        </FeedItem>
        ...
      </Items>
    </Feed>
  </FeedList>
</ListOfFeeds>

这是我试图实现的语法,不确定我可以使用什么/如何使用它。

private void cbCategory_SelectionChanged(object sender, System.Windows.Controls.SelectionChangedEventArgs e)
{

    XDocument doc = XDocument.Load("Feed.xml");
    string category = cbCategory.SelectedItem.ToString();

    var values = doc.Element("Feed")
        .Elements("Category")
        .OrderBy(s => (string)s.Attribute(category));

    listFlow.Items.Add(values);
}

1 个答案:

答案 0 :(得分:0)

要根据所选类别获取Feed项目,您可以使用以下代码

var values = from d in doc.Descendants("Feed")
                    where (string)d.Element("Category")==category
                    select 
                    d.Descendants("FeedItem");