2012-09-23 2 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에는 두 개의 '범주'값이 있습니다.

두 번째 '카테고리'값만 읽고 싶습니다. 두 가지를 모두 읽는 것이 보너스이지만 필수는 아닙니다.

답변

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;