如何以新形式打开 RSS 源的文章

本文关键字:RSS 文章 新形式 | 更新日期: 2023-09-27 18:31:48

你知道要向代码中添加什么才能从RSS提要打开所需的文章吗?以新形式。

在新形式中,我应该得到文章的标题和内容,图像是可选的

这是我的代码,其中文章列表是:

private void ls_text_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {
        try
        {
    ListBox listBox = sender as ListBox;
            if (listBox != null && listBox.SelectedItem != null)
            {
                SyndicationItem sItem = (SyndicationItem)listBox.SelectedItem;
                if (sItem.Links.Count > 0)
                {
                     if (listBox != null && listBox.SelectedItem != null)
            {
                SyndicationItem sItem = (SyndicationItem)listBox.SelectedItem;
                PhoneApplicationService.Current.State["myItem"] = sItem;
                NavigationService.Navigate(new Uri("/Clanak.xaml",UriKind.Relative));// leads to article form
                }
            }
        }
        catch (Exception f)
        {
            MessageBox.Show(f.Message, "", MessageBoxButton.OK);
        }
    }

我编写了一段代码,可以正确完成大部分工作:

protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
    {
        try
        {
            SyndicationItem sItem = PhoneApplicationService.Current.State["myItem"] as SyndicationItem;
            PageTitle.Text = sItem.Title.Text; //Title would go in the pagetitle of the form , Title shows fine
            PageTitle.FontSize = 40;
            //tb_Content.Text = sItem.Summary.Text; //all goes fine
            foreach (SyndicationItem item in sItem.SourceFeed.Items)
            {
                foreach (SyndicationElementExtension ext in item.ElementExtensions)
                {
                    if (ext.GetObject<XElement>().Name.LocalName == "encoded")
                        tb_Content.Text = ext.GetObject<XElement>().Value; //textblock for content, throws NullReferenceException
                }
            }
        }
        catch (Exception f)
        {
            MessageBox.Show(f.Message, "Error clanak", MessageBoxButton.OK);
        }
    }

内容无法识别,我一直得到 NullReference,当我在文本块上链接摘要时,文章的日期显示正常。此外,每次当我返回列出所有文章的列表时,我都会收到错误"您只能在OnNavigatedTo"和"OnNavigatedFrom"之间使用状态。当我按下主页按钮时,调试器显示(应用程序崩溃)。

这就是我得到的: Microsoft.Phone 中发生了类型为"System.InvalidOperationException"的第一次机会异常.dll 类型为"System.Security.SecurityException"的第一次机会异常发生在System.Runtime.Serialization中.dll mscorlib 中发生了类型为"System.Reflection.TargetInvocationException"的第一次机会异常.dll 类型为"System.Security.SecurityException"的第一次机会异常发生在System.Runtime.Serialization中.dll 线程 '' (0xfc2037a) 已退出,代码为 0 (0x0)。 线程 '' (0xe880366) 已退出,代码为 0 (0x0)。 线程 '' (0xe310372) 已退出,代码为 0 (0x0)。 线程 '' (0xf970392) 已退出,代码为 0 (0x0)。 线程 '' (0xe470392) 已退出,代码为 0 (0x0)。

这是我正在处理的提要:http://www.zimo.co/feed/我的主要问题是如何通过 nullref。异常并获取内容。

如何以新形式打开 RSS 源的文章

首先,您应该将Item保存到某个地方,在那里您可以从另一个Page访问它。

例如:

SyndicationItem sItem = (SyndicationItem)listBox.SelectedItem;  
PhoneApplicationService.Current["myItem"] = sItem;

比,创建一个新页面并导航到该页面NavigationService.Navigate(new Uri("/newPage.xaml"));

在详细信息页面的构造函数中,根据需要填写标题和内容

SyndicationItem sItem = PhoneApplicationService.Current["myItem"] as SyndicationItem;
// set Title and so on...