【发布时间】:2019-08-12 12:32:21
【问题描述】:
我对 C# 和 HtmlAgilityPack 有疑问。 我想解析出材料的价格,但我不知道如何访问该项目。它是“tr”中的“td 元素”。问题是有 3 个“td 元素”,我无法访问第二个,而只能访问第一个。我希望你能理解我的问题并能帮助我。
这是我要访问的 HTML 代码:
<tr role="row" class="odd" id="itemTable" data-name="clay_r" data-server="1">
<td>Lehm</td>
<td>$191</td>
<td><input class="itemboxes" data-name="clay_r" data-server="1" type="checkbox"></td>
</tr>
<tr role="row" class="odd" id="itemTable" data-name="coal_r" data-server="1">
<td>Kohle</td>
<td>$303</td>
<td><input class="itemboxes" data-name="coal_r" data-server="1" type="checkbox"></td>
</tr>
这是我用 C# 写下的代码,它可以工作,但仅适用于每个第一个 td 元素:
var products = htmlDocument.DocumentNode.Descendants("div")
.Where(node => node.GetAttributeValue("id", "")
.Equals("accordion1")).ToList();
var productListItems = products[0].Descendants("tr")
.Where(node => node.GetAttributeValue("data-name", "")
.Contains("")).ToList();
foreach (var productListItem in productListItems)
{
Console.WriteLine(productListItem.GetAttributeValue("data-name", ""));
Console.WriteLine(productListItem.Descendants("td").FirstOrDefault().InnerText);
Console.WriteLine();
}
当我启动程序时,它会显示在控制台中:
粘土_r
莱姆
煤_r
科勒
正如我所愿,但应该显示商品的价格而不是“Lehm”或“Kohle”。
【问题讨论】:
标签: c# visual-studio html-agility-pack