我想要一个表格的数据,所以我写了下面。不起作用
doc.DocumentNode.SelectNodes("//form[@name='F1']//input[@name]");把它分成两步
var node = doc.DocumentNode.SelectSingleNode("//form[@name='F1']");
var nodes = node.SelectNodes("//input[@name]");但是,我从整个html文件中获取数据,而不是从节点/表单获取数据,这是意外的。我怎样才能从那份表格中得到结果?我尝试了/input[@name]和.//input[@name],这给了我null
发布于 2011-12-22 10:41:24
这似乎是Html中<form>标记解析的默认行为。正如他们所说的,这里
表单是这样处理的,因为许多HTML页面过去都有重叠的表单,因为这实际上是原始HTML的一个(强大的)特性。既然XML和XHTML已经存在,每个人都认为重叠是一个错误,但事实并非如此(在HTML3.2中)。
您可以通过以下方法更改它:
HtmlNode.ElementsFlags.Remove("form");而且您的"//form[@name='F1']//input[@name]"表达式应该可以工作。或者将第二个表达式更改为".//input[@name]",它也应该工作:
var node = doc.DocumentNode.SelectSingleNode("//form[@name='F1']");
var nodes = node.SelectNodes(".//input[@name]");https://stackoverflow.com/questions/8191273
复制相似问题