2012-12-13 43 views
0

我創建一個小的RSS閱讀器應用程序。WP7 SyndicationFeed

的代碼我使用來獲取XML如下:

void PhonePage1_Loaded(object sender, RoutedEventArgs e) 
    { 
     WebClient wc = new WebClient(); 
     wc.OpenReadCompleted += new OpenReadCompletedEventHandler(wc_OpenReadCompleted); 
     wc.OpenReadAsync(new Uri("http://www.benchmark.pl/rss/aktualnosci-pliki.xml")); 
    } 

    void wc_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e) 
    { 
     SyndicationFeed feed; 
     using (XmlReader reader = XmlReader.Create(e.Result)) 
     { 
      feed = SyndicationFeed.Load(reader); 
      NewsFeed.ItemsSource = feed.Items; 
     } 
    } 

的問題是,SyndicationFeed項模板不適合在xml文件的模板。我不知何故需要編輯模板,以便正確插入文本。我怎樣才能做到這一點?

回答

1

通過使用SyndicationFeed你將不得不使用它定義的對象。但是,將其轉換爲更能反映XML的內容很容易。

假設你有一個像類:

class MyFeedItem 
{ 
    public string Title { get; set; } 
    public Uri Link { get; set; } 
    public string Description { get; set; } 
    public DateTimeOffset PubDate { get; set; } 
} 

你可以轉換SyndicationFeed項目之如:

private void wc_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e) 
{ 
    SyndicationFeed feed; 
    using (XmlReader reader = XmlReader.Create(e.Result)) 
    { 
     feed = SyndicationFeed.Load(reader); 
     NewsFeed.ItemsSource = ParseFeed(feed); 
    } 
} 

private static IEnumerable<MyFeedItem> ParseFeed(SyndicationFeed feed) 
{ 
    return feed.Items.Select(item => new MyFeedItem 
              { 
               Title = item.Title.Text, 
               Link = item.Links.First().Uri, 
               Description = item.Summary.Text, 
               PubDate = item.PublishDate 
              }); 
} 
+0

感謝您的回答。你可以把整個代碼?當我嘗試在我的wc_OpenReadCompleted函數中插入循環時,我收到錯誤消息,它不能是'void'。 – user197483

+0

答案已更新以顯示用法;) –