我正在使用HtmlAgilityPack,我想从类title
中选择td内的值。我需要Battlefield 3
标记内的值<a>
。
我尝试过以下操作,只是为了获得正确的td元素,我得到一个异常object is not set to an instance
。
var title = from item in document.DocumentNode.Descendants()
where item.Name == "td" && item.Attributes["class"].Value == "title"
select item.InnerHtml;
通过这个小例子,我可能会弄清楚我需要的其余部分。
感谢您的建议。
<tr class="first-in-year">
<td class="year">2011</td>
<td class="img"><a href="/battlefield-3/61-27006/"><img src=
"http://media.giantbomb.com/uploads/6/63038/1700748-bf3_thumb.jpg" alt=""></a></td>
<td class="title">
<a href="/battlefield-3/61-27006/">Battlefield 3</a>
<p class="deck">Battlefield 3 is DICE's next installment in the franchise and
will be on PC, PS3 and Xbox 360. The game will feature jets, prone, a
single-player and co-op campaign, and 64-player multiplayer (on PC). It's due out
in Fall of 2011.</p>
</td>
</tr>
答案 0 :(得分:4)
尝试使用带有类或其他属性说明符的XPath选择器。
//td[@class='title']/a
它应该为您提供具有“标题”类的元素中的所有元素。然后,您将遍历该NodeCollection并调用node.InnerText属性。
var nodes = doc.DocumentNode.SelectNodes("//td[@class='title']/a");
foreach(HtmlNode node in nodes)
{
string title = node.InnerText;
}
W3Schools的教程/资源非常适合快速提升。
答案 1 :(得分:0)
XPath应该可以解决问题。这样的事情应该会有所帮助:
var text = document.DocumentNode.SelectNodes("//td[@class='title']/a");
答案 2 :(得分:0)
这对我有用:
string title = doc.DocumentNode.SelectSingleNode(@"//td[@class='title']/a").InnerText;