Синтаксис XPath - неизвестное значение элемента - PullRequest
3 голосов
/ 19 декабря 2011

Я использую XPath для извлечения таблицы из HTML. У меня уникальная ситуация, когда я знаю только половину значения моего атрибута elements и пытаюсь написать выражение xpath, чтобы найти половину, которую я знаю, и игнорировать остальные. Например

HtmlNodeCollection cols = doc.DocumentNode.SelectNodes("//td[@class='Iknowthis_DontKnowThis']");

Посмотрев w3 школы, я вижу, что есть операторы подстановки для выбора неизвестных узлов, но я не могу найти ничего, что говорит о том, как использовать их в такой ситуации.

Я пробовал что-то подобное, но не могу заставить что-либо работать:

doc.DocumentNode.SelectNodes("//td[@class='Iknowthis_.*']");

Может быть, это невозможно? Я не уверен?

Ответы [ 2 ]

1 голос
/ 19 декабря 2011

Я несколько раз изучал документы по xpath для w3schools, не думаю, что вы можете использовать подстановочные знаки для сопоставления подстрок (при проверке на равенство в предикатах).

Вы можете использовать некоторые из строковые функции строковые функции .Например:

"//td[starts-with(@class,'Iknowthis_')]"

Вам может потребоваться добавить префикс starts-with к пространству имен (например, fn:starts-with), это зависит от реализации.

Существует также matches Строковая функция, которая принимает шаблоны.

0 голосов
/ 03 апреля 2012

может быть, вы можете использовать функцию 'contains ()':

//td[contains(@class, 'Iknowthis')]

также вы можете использовать функцию not (), чтобы исключить что-то:

//td[not(contains(@class, 'Iknowthis'))]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...