Выбор узла XML по значению другого узла - C#
Формулировка задачи:
Работаю с xml. Его структура такова :
У меня в программе есть значение тега id надо достать значение тегa artist из того же item ,в котором данное значение тега id.
Спасибо
Листинг программы
- <data>
- <item>
- <id>182</id>
- <art_url/>
- <artist>Kevin Griffiths</artist>
- <channel_id>182</channel_id>
- <display_artist>Kevin Griffiths</display_artist>
- <display_title>Cantona Kung Fu (Original Mix)</display_title>
- <duration>425</duration>
- <http://www.cyberforum.ru/images/>
- <length>425</length>
- <network_id>1</network_id>
- <release/>
- <started>1476543203</started>
- <title>Cantona Kung Fu (Original Mix)</title>
- <track>Kevin Griffiths - Cantona Kung Fu (Original Mix)</track>
- <track_id>992885</track_id>
- <type>track</type>
- </item>
- <item>
- <id>67</id>
- <art_url>
- //static.audioaddict.com/d/d/2/1/a/b/dd21ab7deb18a4b5a00e68601c4dafa2.jpg
- </art_url>
- <artist>Sygnals</artist>
- <channel_id>67</channel_id>
- <display_artist>Sygnals</display_artist>
- <display_title>Thymisis</display_title>
- <duration>529</duration>
- <images>
- <default>
- //cdn-images.audioaddict.com/d/d/2/1/a/b/dd21ab7deb18a4b5a00e68601c4dafa2.jpg{?size,height,width,quality,pad}
- </default>
- </images>
- <length>529</length>
- <network_id>1</network_id>
- <release>Superluminal</release>
- <started>1476542890</started>
- <title>Thymisis</title>
- <track>Sygnals - Thymisis</track>
- <track_id>713905</track_id>
- <type>track</type>
- </item>
Решение задачи: «Выбор узла XML по значению другого узла»
textual
Листинг программы
- XElement xdata = XElement.Parse(xml);
- // Вариант раз
- string artist = xdata.XPathSelectElement("item[id[.='182']]/artist").Value.Dump();
- // Вариант два
- string artist = xdata.Descendants("item")
- .Single(x => x.Element("id").Value == "182")
- .Element("artist").Value;
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д