按类别选择任何元素-xpath

时间:2018-08-29 12:54:12

标签: c# html-agility-pack

如何使用xpath按类别/名称选择任何元素?

var nodeByClass = doc.DocumentNode.SelectSingleNode("//[@class='class_name']");
var nodeName = doc.DocumentNode.SelectSingleNode("//[@name='element_name']");

我有一个例外

The expression must be evaluated for a set of nodes.

3 个答案:

答案 0 :(得分:0)

您需要在xpath上添加*。 *表示您要选择任何元素。

var nodeByClass = doc.DocumentNode.SelectSingleNode("//*[@class='class_name']");
var nodeName = doc.DocumentNode.SelectSingleNode("//*[@name='element_name']");

答案 1 :(得分:0)

var nodeByClass = doc.DocumentNode.SelectSingleNode("//*[@class='class_name']"); var nodeName = doc.DocumentNode.SelectSingleNode("//*[@name='element_name']");

由于您未指定element标签,因此*将突出显示页面中的所有元素。

答案 2 :(得分:0)

您在//之后缺少定位步骤,因为不允许使用谓词本身。

var nodeByClass = doc.DocumentNode.SelectSingleNode("//*[@class='class_name']");
var nodeName = doc.DocumentNode.SelectSingleNode("//*[@name='element_name']");

速记:

var nodeByClass = doc.DocumentNode.SelectSingleNode("//self::node()[@class='class_name']");
var nodeName = doc.DocumentNode.SelectSingleNode("//self::node()[@name='element_name']");