HtmlAgilityPack中的变量标签?

时间:2014-09-23 17:17:36

标签: c# html parsing html-agility-pack

我在C#中使用此命令:

foreach (HtmlNode node in 
     htmlDoc.DocumentNode.SelectNodes("//tr[@class='discussion r1']"))

问题是我需要包含rX的所有节点:

 discussion r0
 discussion r1
 discussion r2

如何选择所有rX个节点? 如何在一个foreach中仅选择r0r1

2 个答案:

答案 0 :(得分:0)

您可以尝试使用正则表达式(使用matches函数)来匹配rX

  • //tr[matches(@class,'discussion r.')]如果r
  • 后面只有一个字符
  • //tr[matches(@class,'discussion r.+')]当至少有一个
  • //tr[matches(@class,'discussion r\d+')]如果需要后跟数字

答案 1 :(得分:0)

HtmlNode.SelectNodes()仅支持XPath 1.0,它没有正则表达式匹配功能。使用简单的XPath starts-with()contains()函数应该可以解决问题:

//using starts-with()
htmlDoc.DocumentNode
       .SelectNodes("//tr[starts-with(@class,'discussion r')]")
//or using contains()
htmlDoc.DocumentNode
       .SelectNodes("//tr[contains(@class,'discussion r')]")