2012-09-23 85 views
1

我有一個這樣的XML文檔:迭代重複的XML元素

<author>someone</author> 
    <category>Severe Disruption - 5 hours</category> 
    <category>Roadworks</category> 
    <pubDate>Sun, 23 Sep 2012 05:07:39 BST</pubDate> 

和我現有的代碼是這樣的:

_xml = XElement.Parse(e.Result); 
       highwaysResults.Items.Clear(); 
       foreach (XElement value in _xml.Elements("channel").Elements("item")) 
       { 
        highwaysFeedItem _item = new highwaysFeedItem(); 
        _item.Title = value.Element("title").Value; 
        _item.Description = Regex.Replace(value.Element("description").Value, 
        @"<(.|\n)*?>", String.Empty); 
        _item.PubDate = value.Element("pubDate").Value; 
        _item.Category = value.Element("category").Value; 
        _item.Category2 = value.Element("category").Value; 

         highwaysResults.Items.Add(_item); 

的問題是,我的代碼只讀取第一個「類」值,但我現在使用的XML有兩個「類別」值。

我只想讀取第二個'category'值。閱讀兩者都是好事,但不是必需的。

回答

2

只需使用value.Elements("category")並重復項目。

+0

謝謝你,你給我一個好的開始,我在休息的工作 - 我這樣做是這樣的: _item.Category = value.Elements( 「類」)的ElementAt(0).value的; _item.Category2 = value.Elements(「category」)。ElementAt(1).Value; –

+0

太棒了!請記住將問題標記爲已回答! –

1

使用XPath:using System.Xml.XPath;您可以選擇第二個類別元素。

_item.Category2 = value.XPathSelectElement("category[2]").Value;