RSS簡易信息聚合(也叫聚合內容)是一種RSS基于XML標準,在互聯網上被廣泛采用的內容包裝和投遞協議。RSS(Really Simple Syndication)是一種描述和同步網站內容的格式,是使用最廣泛的XML應用。RSS搭建了信息迅速傳播的一個技術平臺,使得每個人都成為潛在的信息提供者。發布一個RSS文件后,這個RSS Feed中包含的信息就能直接被其他站點調用,而且由于這些數據都是標準的XML格式,所以也能在其他的終端和服務中使用,是一種描述和同步網站內容的格式。RSS可以是以下三個解釋的其中一個: Really Simple Syndication;RDF (Resource Description Framework) Site Summary; Rich Site Summary。但其實這三個解釋都是指同一種Syndication的技術。
今天在win10.me看到一個rss,不知道是什么東西,打開看到?

于是在網上查了RSS,又在微軟官網看到[https://msdn.microsoft.com/zh-cn/library/windows/apps/mt429379.aspx](https://msdn.microsoft.com/zh-cn/library/windows/apps/mt429379.aspx)
林政的書也有說過,不過他是用HttpWebRequest
我的rss是使用SyndicationClient?
先創建SyndicationClient
~~~
Windows.Web.Syndication.SyndicationClient client = new Windows.Web.Syndication.SyndicationClient();
Windows.Web.Syndication.SyndicationFeed feed;
~~~
因為輸URL可能是錯的,所以微軟就用try catch
~~~
//uri寫在外面,為了在try之外不會說找不到變量
Uri uri = null;
//uri字符串
string uriString = "http://www.win10.me/?feed=rss2";
try
{
uri = new Uri(uriString);
}
catch (Exception ex)
{
throw ex;
}
~~~
網絡請求有很多異常,我們放在try
~~~
try
{
//模擬http
// 如果沒有設置可能出錯
client.SetRequestHeader("User-Agent", "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident/6.0)");
feed = await client.RetrieveFeedAsync(uri);
foreach (Windows.Web.Syndication.SyndicationItem item in feed.Items)
{
displayCurrentItem(item);
}
}
catch (Exception ex)
{
// Handle the exception here.
}
~~~
我們寫一個函數處理每個SyndicationItem
~~~
private void displayCurrentItem(Windows.Web.Syndication.SyndicationItem item)
{
string itemTitle = item.Title == null ? "No title" : item.Title.Text;
string itemLink = item.Links == null ? "No link" : item.Links.FirstOrDefault().ToString();
string itemContent = item.Content == null ? "No content" : item.Content.Text;
string itemSummary = item.Summary.Text + "";
reminder = itemTitle + "\n" + itemLink + "\n" + itemContent+"\n"+itemSummary+"\n";
}
~~~
reminder是通知顯示,把每個不為空的值放在StringBuilder?

看起來很多html,我們可以用WebUtility,Regex來得到文本
我們可以做一個顯示標題,然后點擊顯示內容
建一個類rssstr,這個類存放rss標題和內容
在viewModel 一個列表`ObservableCollection<rssstr>`
界面MainPage
~~~
<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<Grid.RowDefinitions >
<RowDefinition >
</RowDefinition>
<RowDefinition Height="auto"/>
</Grid.RowDefinitions>
<ScrollViewer Grid.Row="0" VerticalScrollBarVisibility="Auto">
<ListView SelectionChanged="select" ItemsSource="{x:Bind view.rsslist}">
<ListView.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.RowDefinitions>
<RowDefinition/>
</Grid.RowDefinitions>
<TextBlock Text="{Binding title}"/>
</Grid>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
<!--<TextBlock Grid.Row="0" Text="{x:Bind view.reminder,Mode=OneWay}" TextWrapping="Wrap"/>-->
</ScrollViewer>
<Button Grid.Row="1" Margin="10,10,10,10" Content="確定" Click="Button_Click"/>
</Grid>
~~~
新建一個頁面rss_page
~~~
<Page.Resources>
<Style x:Key="TextBlockStyle1" TargetType="TextBlock">
<Setter Property="Margin" Value="10,10,10,10"/>
</Style>
</Page.Resources>
<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<Grid.RowDefinitions>
<RowDefinition Height="auto"/>
<RowDefinition />
<RowDefinition Height="auto"/>
</Grid.RowDefinitions>
<TextBlock Style="{StaticResource TextBlockStyle1}" Grid.Row="0" Text="{x:Bind view.title}"/>
<TextBlock Style="{StaticResource TextBlockStyle1}" Grid.Row="1" Text="{x:Bind view.summary}"/>
<Button Grid.Row="2" Content="確定" Click="Button_Click"/>
</Grid>
~~~
在列表被點擊
~~~
private void select(object sender, SelectionChangedEventArgs e)
{
Frame frame = Window.Current.Content as Frame;
frame.Navigate(typeof(rss_page), (ViewModel.rssstr)(sender as ListView).SelectedItem);
}
~~~
rss_page viewModel使用rssstr
~~~
protected override void OnNavigatedTo(NavigationEventArgs e)
{
view = e.Parameter as rssstr;
base.OnNavigatedTo(e);
}
~~~


rss_page不能滾動TextBlock,可以使用ScrollViewer
~~~
<ScrollViewer Grid.Row="1">
<TextBlock Style="{StaticResource TextBlockStyle1}" Grid.Row="1" Text="{x:Bind view.summary}" TextWrapping="Wrap"/>
</ScrollViewer>
~~~
源代碼?
[https://github.com/lindexi/lindexi_gd/tree/master/rss](https://github.com/lindexi/lindexi_gd/tree/master/rss)
鏈接:[http://pan.baidu.com/s/1sk7v6Zr](http://pan.baidu.com/s/1sk7v6Zr)?密碼:dzfa
[Http://blog.csdn.net/lindexi_gd](http://blog.csdn.net/lindexi_gd)

參考:[http://www.cnblogs.com/linzheng/](http://www.cnblogs.com/linzheng/)
- 前言
- UWP win10 app 新關鍵字x:Bing
- win10應用 UWP 使用MD5算法
- win10 UWP讀寫文件
- UWP appButtonBar樣式
- C# 6.0 $&quot;Hello {csdn}&quot;
- Win10 UWP xaml 延遲加載元素
- UWP xaml 圓形頭像
- UWP 繪制圖形
- win10 uwp 通知Toast
- win10 UWP 顯示地圖
- win10 uwp 參考
- win10 uwp clone
- win10 uwp 裝機必備應用 含源代碼
- RichEditBox 使用自定義菜單
- win10 UWP FlipView
- win10 UWP 獲取系統信息
- win10 UWP 申請微軟開發者
- win10 UWP button
- win10 UWP Markdown 含源代碼
- win10 UWP 應用設置
- win10 UWP 九幽數據分析
- win10 UWP 圓形等待
- win10 UWP 標題欄后退
- win10 UWP 單元測試
- win10 UWP 你寫我讀
- win10 UWP RSS閱讀器
- win10 UWP MessageDialog 和 ContentDialog
- win10 UWP Hmac
- win10 UWP GET Post
- Win10 UWP Intro to controls and events
- win10 UWP Controls by function
- win10 uwp App-to-app communication 應用通信