2012-01-24 3 views
2

간단한 wpf RSS 응용 프로그램을 변환하여 MVVM & Linq를 배우고 있습니다. 원래는 XmlDataProvider를 사용하여 로컬 XML 파일이나 RSS URL을로드했습니다. 지금은 괜찮 로컬 XML 파일을로드 작동하지만 아래의 코드를 사용하고 있지만 해당 "FileNotFoundException"해당 URL을 throw합니다. 디버깅하는 동안 올바른 URL 주소 (문자열 RSS_URL)가 표시되지만 파일을 찾을 수 없습니다. 초기 검색을 통해 WebClient & HttpWebRequest로 안내되었지만 그와 어떤 성공도 이루지 못했습니다. 나는 올바른 길을 가고 있는가? 사용할 수있는 코드 또는 자습서 링크가 있습니까? MVVM 응용 프로그램에서 RSS 피드로 Xdocument로드

public static List<RSSItem> Load(string RSS_URL) 
    { 
     if (!File.Exists(RSS_URL)) 
     { 
      throw new FileNotFoundException("Datasource file could not be found", RSS_URL); 
     } 

     var rssfiles = XDocument.Load(RSS_URL).Descendants("item").Select(
      x => new RSSItem(
       (string)x.Element("title"), 
       (string)x.Element("link"), 
       (string)x.Element("description"))); 

     return rssfiles.ToList(); 
    } 

당신은

+0

내가 ['XmlDocument'] 사용하는 것이 좋습니다 것입니다 (http://msdn.microsoft.com/en-us/library /system.xml.xmldocument.aspx) 대신 바인딩 시스템에 더 잘 통합되었습니다. –

+0

@ H.B. "바인딩 시스템에 더 잘 통합"한다는 것은 무엇을 의미합니까? –

+0

@DanEsparza : ['Binding.XPath' 문서 (http://msdn.microsoft.com/en-us/library/system.windows.data.binding.xpath.aspx)를 참조하십시오. 'XmlDocument' 패밀리. –

답변

2

XDocument.Load()는 아무런 문제없이 URL을 수락합니다. 코드의 문제는 File.Exists()를 사용하여 URL이 유효한지 여부를 확인하는 것입니다. File.Exists()는 uri가 아닌 파일 시스템 경로 만 허용합니다.

추가 정보 빠른 정보 : Load() 메서드는 기본 XmlReader와 Create() 호출을 사용합니다. 리소스 (이 경우 URL)가 존재하지 않으면 해당 리소스가 없음을 나타내는 WebException이 throw됩니다.

XDocument.Load 정보 : http://msdn.microsoft.com/en-us/library/bb343181.aspx

XmlReader.Create 정보 : http://msdn.microsoft.com/en-us/library/w8k674bf.aspx

+0

굉장 - 당신은 그런 것을 어떻게 아십니까! 나는 당신의 도움없이 어떻게 그것을 알아 냈을까요? 훌륭하게 작동합니다. 고맙습니다. –

0

사용하고있는 XDocument.Load 과부하가 파일의 로딩을 위해 특별히 감사합니다. RSS 피드에서 다운로드하여 XML 데이터를 로컬로 가져와야합니다. MSDN 문서 here에서 스트림에서 읽는 것과 같은 대안을 찾아보십시오. 필요한 내용에 더 적합 할 수 있습니다.

관련 문제