2014-11-09 1 views
0

C#에서 iTunes Podcast XML 피드를 구문 분석하려고하는데 문제가 있습니다. 성공적으로 피드를 다운로드하여 XmlDocument 개체 (테스트 됨)에 넣습니다. 그 후, 그것은 for-each 라인으로 간다. 그러나 결코 루프에 들어 가지 않는다. 채널/항목에 어떤 요소도 없다는 것을 왜 말하고 있는지 모르겠다. (적어도 내가 지금 생각하고있는 것). 코드 번호는 다음과 같습니다.System.Xml을 사용하여 C#에서 iTunes Podcast 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)); 
    } 
} 

감사합니다. 대단히 감사합니다! 커클랜드

+0

여기에 LINQ를 사용할 수없는 이유라도? – Jonesopolis

답변

1

내 댓글을가는

, 난 그냥 XDocument을 사용하십시오 : 당신이 그것을 차지하기 위해 XNamespace를 사용할 필요가 있으므로

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의 네임 스페이스입니다.

+0

매력처럼 작동했습니다! 고마워요! – Kirkland

+0

내가 시도한 것보다이 방법의 다른 이점은 무엇입니까? 대부분의 경우 XML을 파싱하는 가장 좋은 방법이라고 생각하십니까? 이 제품을 다른 제품보다 언제 사용 하시겠습니까? 미안하지만 설문지처럼 들리지만 실제로 배우고 싶습니다. 어떤 응답이라도 대단히 감사 할 것입니다! – Kirkland

+1

Jon Skeet이 당신에게 제공 할 수있는 것보다 [더 나은 대답] (http://stackoverflow.com/questions/1542073/xdocument-or-xmldocument)을주었습니다. – Jonesopolis

0

참고로 Apple 웹 사이트에 itunes 네임 스페이스 링크는 대소 문자를 구별합니다. 나는 version = "2.0"부분을 아직 사용하지 않았지만 지금까지는 그것을 필요로하지 않았다. 나는 "... DTDs/Podcast-1.0.dtd"라는 다른 곳에서 복사 한 링크를 사용하고있었습니다. 단지 소문자로 변경 한 후 RSS 리더에서 구문 분석을 시작했습니다.

Screenshot of Apple documentation