2014-11-09 6 views
0

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

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

+0

По какой-либо причине вы не можете использовать LINQ здесь? – Jonesopolis

ответ

1

Уходя мой комментарий, я бы просто использовать 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 для учета этого.

+0

Работал как шарм! Большое спасибо! – Kirkland

+0

Какие еще преимущества этого метода по сравнению с тем, что я пытался, вы видите? Считаете ли вы, что это лучший способ анализа XML в большинстве случаев? Когда вы будете использовать это над другим? Извините, я знаю, что я похожа на анкету, но мне очень нравится учиться. Любой ответ будет очень благодарен! – Kirkland

+1

Джон Скит дал [лучший ответ] (http://stackoverflow.com/questions/1542073/xdocument-or-xmldocument), чем я смогу вам предоставить. – Jonesopolis

0

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

Screenshot of Apple documentation