2012-02-22 23 views
1

私はRSSフィードをhttp://b.fanfiction.net/atom/l/224/3/0/1/1/50/0/0/0/0から解析しようとしていますが、何らかの理由で要素名で検索できません。私はthis pageの指示に従っていますが、彼の例は上のファンフィクションサイトでは動作していないようです。ここでRSSフィードを解析できません

は、私が使用しているコードです:

private void getData_Click(object sender, RoutedEventArgs e) 
{ 
    String rss = "http://b.fanfiction.net/atom/l/224/3/0/1/1/50/0/0/0/0"; 

    HttpWebRequest request = HttpWebRequest.CreateHttp(rss); 
    request.BeginGetResponse(
     asyncCallback => 
     { 
      string data = null; 

      using (WebResponse response = request.EndGetResponse(asyncCallback)) 
      { 
       using (StreamReader reader = new StreamReader(response.GetResponseStream())) 
       { 
        data = reader.ReadToEnd(); 
       } 
      } 
      Deployment.Current.Dispatcher.BeginInvoke(() => HttpsCompleted(data)); 
     } 
     , null); 
} 

private void HttpsCompleted(string feedString) 
{ 
    // build XML DOM from feed string 
    XDocument doc = XDocument.Parse(feedString); 

    // show title of feed in TextBlock 
    XElement feed = doc.Element("feed"); 
    XElement title = feed.Element("title"); 
    String txt_title = title.Value; 
    txtBlk_FeedDescription.Text = txt_title; 
    // add each feed item to a ListBox 
    foreach (var item in doc.Descendants("entry")) 
    { 
     listBox1.Items.Add(item.Element("title").Value); 
    } 
} 

私は実行して、すべての要素とドキュメントのサブ要素を列挙してみました:

foreach (XElement element in doc.Elements()) 
     { 
      txtBlk_FeedDescription.Text += element.Name.ToString() + "\n"; 
      foreach (XElement subelement in element.Elements()) 
      { 
       txtBlk_FeedDescription.Text += subelement.Name.ToString() + "\n"; 
      } 
     } 

そして、それは以下のリストの結果:

{http://www.w3.org/2005/Atom}

{フィード10}著者

{http://www.w3.org/2005/Atom}タイトル

{http://www.w3.org/2005/Atom}字幕

{http://www.w3.org/2005/Atom}リンク

{http://www.w3.org/2005/Atom}更新

{http://www.w3.org/2005/Atom} ID

{http://www.w3.org/2005/Atom}エントリ

{} http://www.w3.org/2005/Atomエントリ

{} http://www.w3.org/2005/Atomエントリ

...

私はここで行うことになってるものを上の任意のヘルプ?

ありがとうございます!

答えて

3

あなたのLinq to XMLクエリは名前で要素を探していますが、名前空間は含まれていません。あなたがソース文書を検査した場合、あなたはそれがtehの次の名前空間を持っていることがわかります。

xmlns="http://www.w3.org/2005/Atom" 

working with XML namespaces上のMSDNドキュメントを参照してください。例えば、以下はfeed要素を選択します:

XNamespace ns = "http://www.w3.org/2005/Atom"; 

XElement feed = doc.Element(ns + "feed"); 

あなたはにすべてあなたの要素名を名前空間を追加する必要があります。

関連する問題