我正在尝试使用Html Agility Pack和LINQ从HTML表中获取所有单元格。我已经在HtmlAgilityPack.HtmlDocument中加载了HTML源代码,并使用LINQ选择了td标签。但是,在使用foreach迭代结果后,它会在第二个记录处崩溃。
这是HTML源代码的片段:
它只返回第一个元素,例如如果我使用foreach而不是:
它返回New York,但是如果我尝试使用ElementAt(1),则会崩溃并显示对象引用未设置为对象实例。 有什么帮助吗?谢谢。
这是HTML源代码的片段:
<tr>
<td class='city'>New York</td>
<td>Card 1</td>
</tr>
<tr>
<td class='city'>London</td>
<td>Card 2</td>
</tr>
<tr>
<td class='city'>Tokyo</td>
<td>Card 3</td>
</tr>
<tr>
<td class='city'>Berlin</td>
<td>Card 4</td>
</tr>
这是我制作的内容:
htmlDoc.LoadHtml(await msgRecived.Content.ReadAsStringAsync());
var tds=
from td in htmlDoc.DocumentNode.Descendants("td")
where td.Attributes["class"].Value == "city"
select td.InnerText;
foreach (var td in tds)
{
citiesText = citiesText + " " + td;
}
它只返回第一个元素,例如如果我使用foreach而不是:
citiesText = tds.ElementAt(0);
它返回New York,但是如果我尝试使用ElementAt(1),则会崩溃并显示对象引用未设置为对象实例。 有什么帮助吗?谢谢。