.NET 4.x HtmlAgilityPack шалит - C#
Формулировка задачи:
Здравствуйте. Как-то странно ведет себя HtmlAgilityPack, или я дурак.
У меня переберется список нодов и извлекается из них некие данные, но она каждый мне выдает одинаковые данные и они ровняются данным из самого первого нода. Хотя, если заглянуть в ноду, то видно что данные каждый раз разные, но строка
Класс Game:
node.SelectSingleNode("XPath")
все равно выдает данные из первой ноды. Что я делаю не так? Код:
Листинг программы
- var htmldoc = new HtmlAgilityPack.HtmlDocument();
- var s = await Steam.GetGameList("29", i.ToString(), "Price_ASC");
- htmldoc.LoadHtml(s.RestResponse.Content);
- var nodes = htmldoc.DocumentNode.SelectNodes("//*[@id='search_result_container']/div[2]/a");
- foreach (var node in nodes)
- {
- Game g = new Game();
- g.link = node.Attributes["href"].Value;
- g.name = node.SelectSingleNode("//div[2]/span").InnerText;
- g.price = node.SelectSingleNode("//div[6]").InnerText.Trim();
- g.image = node.SelectSingleNode("//div[1]/img").Attributes["src"].Value;
- listGame.Add(g);
- }
Листинг программы
- public class Game
- {
- public string name { get; set; }
- public string price { get; set; }
- public string image { get; set; }
- public string link { get; set; }
- public override string ToString()
- {
- return name;
- }
- }
Решение задачи: «.NET 4.x HtmlAgilityPack шалит»
textual
Листинг программы
- int i = 0;
- foreach (var node in nodes)
- {
- Game g = new Game();
- g.link = node.Attributes["href"].Value;
- g.name = node.SelectNodes("//div[2]/span")[i].InnerText;
- g.price = node.SelectNodes("//div[6]")[i].InnerText.Trim();
- g.image = node.SelectNodes("//div[1]/img")[i++].Attributes["src"].Value;
- listGame.Add(g);
- MessageBox.Show(g.link + Environment.NewLine +
- g.name+ Environment.NewLine +
- g.price + Environment.NewLine +
- g.image + Environment.NewLine);
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д