2012-01-24 1 views
2

私はMVVMを学んでいます&簡単なwpf RSSアプリを変換することでLinq to XML。もともとは、XmlDataProviderを使ってローカルのxmlファイルやRSS URLをロードしていました。私は現在、ローカルxmlファイルを読み込み中にうまく動作するが、URLが "FileNotFoundException"のときは以下のコードを使用しています。デバッグ中に(RSS_URLの)正しい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(); 
    } 

使用しているXDocument.Load過負荷をファイルからロードするための、具体的であるあなたに

+0

私は[ 'XmlDocument']を使用することをお勧めします(http://msdn.microsoft.com/en-us/library /system.xml.xmldocument.aspx)、代わりに、バインディングシステムに統合する方が優れています。 –

+0

@ H.B。 「バインディングシステムに統合した方が良い」という意味はどうですか? –

+0

@DanEsparza:['Binding.XPath' documentation(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がスローされます。

XDocument.Load情報: http://msdn.microsoft.com/en-us/library/bb343181.aspx

XmlReader.Create情報: http://msdn.microsoft.com/en-us/library/w8k674bf.aspx

+0

驚くばかり - どうやってそのようなことを知っていますか?私はあなたの助けなしにそれをどのように考え出したのだろうか分かりません。よく働く。ありがとうございました。 –

0

ありがとうございます。 XMLデータをローカルに取得するには、RSSフィードからダウンロードする必要があります。 MSDNドキュメントhereをご覧ください。ストリームからの読み込みなど、必要なものに適しています。

関連する問題