htmlagilitypack和httpclient使用两个foreach语句

时间:2015-02-01 11:48:49

标签: c# silverlight windows-phone-8 html-agility-pack

Windows Phone 8.0 Silverlight App。

我在MainPage.xaml.cs中有以下代码......

    protected async override void OnNavigatedTo(NavigationEventArgs e)
    {
        base.OnNavigatedTo(e);
        string htmlPage = "";
        string htmlPage2 = "";
        using (var client = new HttpClient())
        {
            htmlPage = await client.GetStringAsync("http://page1");
            htmlPage2 = await client.GetStringAsync("http://page2");
        }

        HtmlDocument htmlDocument = new HtmlDocument();
        htmlDocument.LoadHtml(htmlPage);

        foreach (var div in htmlDocument.DocumentNode.SelectNodes("//div[starts-with(@id, 'p66acd000')]"))
        {
            GameDeals newGameDeals = new GameDeals();
            newGameDeals.dealTitle = div.SelectSingleNode(".//h2//a").InnerText.Trim();
            newGameDeals.dealCover = div.SelectSingleNode("(.//img)[1]").Attributes["src"].Value;
            newGameDeals.dealPriceText = div.SelectSingleNode(".//a[@class= 'GExclusive']").InnerText.Trim();
            newGameDeals.dealPriceGold = div.SelectSingleNode(".//span[@class= 'GPrice ProductPrice']").InnerText.Trim();
            newGameDeals.dealPriceSilver = div.SelectSingleNode(".//span[@class= 'SPrice ProductPrice']").InnerText.Trim();
            gameDeals.Add(newGameDeals);
        }
        lstGameDeals.ItemsSource = gameDeals;

        HtmlDocument htmlDocument2 = new HtmlDocument();
        htmlDocument2.LoadHtml(htmlPage2);

        foreach (var div in htmlDocument2.DocumentNode.SelectNodes("//div[starts-with(@class, 'copyContainer')]"))
        {
            GameDeals newGameDeals = new GameDeals();
            newGameDeals.dealTitle = div.SelectSingleNode(".//h4").InnerText.Trim();
            newGameDeals.dealCover = div.SelectSingleNode("(.//img)[1]").Attributes["src"].Value;
        }
        lstGameDeals.ItemsSource = gameDeals;
    }

我从两个页面检索数据,但是,page2的内容不会传递给我的MainPage.xaml中的lstGameDeals。我可以使用两个foreach,还是有其他我在这里做错了?

感谢。

1 个答案:

答案 0 :(得分:0)

在第二个foreach之后,您使用lstGameDeals变量设置了gameDeals的ItemsSource,但我认为您要使用newGameDeals。在第二次预告之后尝试lstGameDeals.ItemsSource = newGameDeals ;