Выберите любой элемент по классу - xpath - PullRequest
0 голосов
/ 29 августа 2018

Как я могу выбрать любой элемент по классу / имени, используя 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 голосов
/ 29 августа 2018

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

Поскольку вы не указали тег элемента, * выделит все элементы на странице.

0 голосов
/ 29 августа 2018

Вы пропускаете шаг местоположения после //, так как сам по себе предикат недопустим.

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']");
0 голосов
/ 29 августа 2018

Вам необходимо добавить * в xpath. * Означает, что вы хотите выбрать любой элемент.

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