Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 如何使用HTML Agility Pack选择特定的表格单元格_Vb.net_Xpath_Html Agility Pack - Fatal编程技术网

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

Vb.net 如何使用HTML Agility Pack选择特定的表格单元格,vb.net,xpath,html-agility-pack,Vb.net,Xpath,Html Agility Pack,我必须从HTML表格的单元格中提取特定字段。使用Firebug,我能够获得我需要的单元格的精确XPath。不幸的是,这些单元格没有id标记。我想我可以使用DocumentNode.SelectSingleNode并在该路径中传递,但它似乎工作不正常。我做错了什么?还是有比我现在做的更好的方法?不幸的是,我没有使用XPath的经验,所以这比我预期的要困难。到目前为止,我知道HTML非常混乱,但我无法控制改变: Dim page As New HtmlAgilityPack.HtmlDocument

我必须从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很有趣。

谢谢!其中一个父表有一个id,使用这种方法,我能够深入到我需要的内容。HtmlAgilityPack在XPath选择器中有一些错误…可能是C中Xml组件的错误。有时您希望通过//table[@id='tableid']/tr[3]/td[2]选择第三个tr。它可能返回null。。。。