获取url 一个RSS订阅并打开在xaml windows Pho

本文关键字:image Pho xaml windows 一个 src img url 获取 RSS | 更新日期: 2023-09-27 18:17:12

我有这样一个类:

class clsFeed
    {
        public string Title { get; set; }
        public string Summary { get; set; }
        public string PublishDate { get; set; }
        public string Content { get; set; }
        public string Image { get; set; }
        public Uri Link { get; set; }
    }

和我需要得到位于标签http://www.unnu.com/feed内的标签,并在我的主页上与其他数据的列表中打开此地址。这是我使用的代码。它编译,但在我看来他总是空的。

private void UpdateFeedList(string feedXML)
        {
            // Load the feed into a SyndicationFeed instance
            StringReader stringReader = new StringReader(feedXML);
            XmlReader xmlReader = XmlReader.Create(stringReader);
            SyndicationFeed feed = SyndicationFeed.Load(xmlReader);
            //var counter = feed.Items.Count();
            var lista = feed.Items.ToList().Select(s => new clsFeed
            {
                Title = s.Title.Text,
                Summary = s.Summary.Text,
                PublishDate = s.PublishDate.Date.ToString(),
                Content = "",
                Imagem = s.Summary.Text.Split('<')[5].Replace("img src='", "").Replace("' border='0' />", ""),
                Link = s.Links.FirstOrDefault().Uri
            }).ToList();

                      Deployment.Current.Dispatcher.BeginInvoke(() =>
            {
                // Bind the list of SyndicationItems to our ListBox
                feedListBox.ItemsSource = lista;
                feedListBox.ItemsSource = feed.Items;
                //progressIndicator.IsVisible = false;
            });
            //gridProgressBar.Visibility = Visibility.Collapsed;   //Quando atualiza a lista de feeds esconde a progress bar.
            panorama.Visibility = Visibility.Visible;
        }

private void UpdateFeedList(string feedXML)
    {
        // Load the feed into a SyndicationFeed instance
        StringReader stringReader = new StringReader(feedXML);
        XmlReader xmlReader = XmlReader.Create(stringReader);
        SyndicationFeed feed = SyndicationFeed.Load(xmlReader);

        // In Windows Phone OS 7.1, WebClient events are raised on the same type of thread they were called upon. 
        // For example, if WebClient was run on a background thread, the event would be raised on the background thread. 
        // While WebClient can raise an event on the UI thread if called from the UI thread, a best practice is to always 
        // use the Dispatcher to update the UI. This keeps the UI thread free from heavy processing.
        var lista = feed.Items.ToList().Select(s => new clsFeed
        {
            Title = s.Title.Text,
            Summary = s.Summary.Text,
            PublishDate = s.PublishDate.Date.ToString(),
            Content = "",                
            Imagem = Regex.Match(feedXML, @"<img's+src='(.+)''s+border='0''s+/>").Groups[1].Value,
            Link = s.Links.FirstOrDefault().Uri
        }).ToList();


        Deployment.Current.Dispatcher.BeginInvoke(() =>
        {
            // Bind the list of SyndicationItems to our ListBox
            feedListBox.ItemsSource = lista;

        });
        gridProgressBar.Visibility = Visibility.Collapsed;   //Quando atualiza a lista de feeds esconde a progress bar.
        panorama.Visibility = Visibility.Visible;
    }

这工作,但没有出现在屏幕上。有人知道为什么吗?

我的列表框保持不变。


没有任何错误。

<ListBox x:Name="feedListBox" HorizontalAlignment="Left" Height="537" Margin="10,72,0,0" VerticalAlignment="Top" Width="398" SelectionChanged="listFeedBox_SelectionChanged" >
                        <ListBox.ItemTemplate>
                            <DataTemplate>
                                <StackPanel VerticalAlignment="Top">
                                    <Grid>
                                    <Image Width="400" Height="130" Name="img" Source="{Binding feed.ImageUrl}"/>
                                    </Grid>
                                    <TextBlock TextDecorations="Underline" FontSize="24" Name="feedTitle" TextWrapping="Wrap" Margin="12,0,0,0" HorizontalAlignment="Left" Text="{Binding Title.Text, Converter={StaticResource RssTextTrimmer}}" >
                                        <TextBlock.Foreground>
                                            <SolidColorBrush Color="#FF159DDE"/>
                                        </TextBlock.Foreground>
                                    </TextBlock>
                                    <TextBlock Name="feedSummary" TextWrapping="Wrap" Margin="12,0,0,0" Text="{Binding Summary.Text, Converter={StaticResource RssTextTrimmer}}" />
                                    <TextBlock Name="feedPubDate" Foreground="{StaticResource PhoneSubtleBrush}" Margin="12,0,0,10" Text="{Binding PublishDate}" />
                                    <TextBlock Name="feedContent" Text="{Binding Content}" />
                                </StackPanel>
                           </DataTemplate>
                        </ListBox.ItemTemplate>
                    </ListBox>

获取url <img src=''>一个RSS订阅并打开<image>在xaml windows Pho

您解析图像URL的启发式方法很脆弱,您应该使用正则表达式:

using System.Text.RegularExpressions;
...
Image = Regex.Match(s.Summary.Text, @"<img's+src='(.+)''s+border='0''s+/>").Groups[1].Value,