Анализ XML-подкаста iTunes в C# с использованием System.Xml

Я пытаюсь проанализировать XML-канал подкаста iTunes в C# и у меня возникли проблемы. Он успешно загружает канал и помещает его в объект XmlDocument (проверено). После этого он переходит к строке for-each, но никогда не входит в цикл. Я понятия не имею, почему он говорит, что в канале / элементе нет никаких элементов (по крайней мере, я сейчас так думаю). Вот код:

    string _returnedXMLData;
    XmlDocument _podcastXmlData = new XmlDocument();

    public List<PodcastItem> PodcastItemsList = new List<PodcastItem> ();

    _podcastXmlData.Load(@"http://thepointjax.com/Podcast/podcast.xml");

    string title = string.Empty;
    string subtitle = string.Empty;
    string author = string.Empty;

    foreach (XmlNode node in _podcastXmlData.SelectNodes(@"channel/item")) {
        title = node.SelectSingleNode (@"title").InnerText;
        subtitle = node.SelectSingleNode (@"itunes:subtitle").InnerText;
        author = node.SelectSingleNode (@"itunes:author").InnerText;
        PodcastItemsList.Add (new PodcastItem(title, subtitle, author));
    }
}

Заранее благодарю за любую помощь! Это высоко ценится!

Kirkland

2 ответа

Решение

Исходя из моего комментария, я бы просто использовал XDocument:

 var xml = XDocument.Load("http://thepointjax.com/Podcast/podcast.xml");

 XNamespace ns = "http://www.itunes.com/dtds/podcast-1.0.dtd";
 foreach (var item in xml.Descendants("item"))
 {
     var title = item.Element("title").Value;
     var subtitle = item.Element(ns + "subtitle").Value;
     var author = item.Element(ns + "author").Value;

     PodcastItemsList.Add (new PodcastItem(title, subtitle, author));
 }

itunes пространство имен в XML, поэтому вам нужно использовать XNamespace чтобы объяснить это.

К сведению, на веб-сайте Apple говорится, что ссылка на пространство имен itunes чувствительна к регистру. Я еще не использовал часть version="2.0", но пока она мне не нужна. Я использовал ссылку, скопированную из другого места, которая была "...DTDs/Podcast-1.0.dtd". Только после изменения на нижний регистр синтаксический анализ в моей программе чтения RSS начал работать.

Скриншот документации Apple

Другие вопросы по тегам