如何使用HTML Agility Pack选择特定的表格单元格

html-agility-pack vb.net xpath

我必须从HTML表格中的单元格中提取特定字段。使用Firebug我能够获得我需要的细胞的确切XPath(不幸的是,细胞没有id标签)。我以为我可以使用DocumentNode.SelectSingleNode并传入该路径,但它似乎没有正常工作。我究竟做错了什么?或者有更好的方法来解决这个问题吗?不幸的是,我没有使用XPath的经验,所以这比我预期的更难。这就是我到目前为止所知道的(我知道HTML特别混乱,但我不能控制改变):

Dim page As New HtmlAgilityPack.HtmlDocument
Dim node As HtmlAgilityPack.HtmlNode
page.LoadHtml(fileContents)
node = page.DocumentNode.SelectSingleNode("/html/body/form/div[6]/table/tbody/tr/td/table/tbody/tr/td/table/tbody/tr/td/table/tbody/tr/td[2]")

非常感激。

一般承认的答案

Firebug可能修复了破坏的html标签。如果你想选择和Html节点,建议使用class或id。例如:

//div[@class='content']//table//tr[1]/td[2]

缩短路径,并使用类或id选择器。

如果表有自己的id,你可以使用:

//table[@id='tableid']/tr[1]/td[2]

尝试一下,你会发现XPATH很有趣。



Related

许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow