Xpath и подстановочные знаки - PullRequest
2 голосов
/ 10 апреля 2011

Я попробовал несколько комбинаций без успеха. Полный xpath к этим данным равен .//*[@id='detail_row_seek_37878']/td Проблема в том, что числовая часть '37878' изменяется для каждого узла, и поэтому я не могу использовать foreach для циклического перемещения по узлам. Есть ли способ использовать подстановочный знак и уменьшить xpath до .//*[@id='detail wildcard, чтобы обойти часть абсолютного значения? Я использую пакет гибкости html для этого.

 HtmlNode ddate = node.SelectSingleNode(".//*[@id='detail_row_seek_37878']/td");

1 Ответ

14 голосов
/ 10 апреля 2011

Извлечение части, которая не изменяется:

//*[starts-with(@id, 'detail_row_seek')]/td

Связанные методы и функции

Для соответствия элементам, атрибут id которых содержит строку _row_ на 7-м символе :

//*[substring(@id, 7, 5)='_row_']/td 

Для сопоставления с элементами, атрибут которых id содержит текст detail_ в любой позиции:

//*[contains(@id, 'detail_')]/td 

Для соответствия элементам, чей атрибут id заканчивается текстом detail_row_seek:

//*['detail_row_seek' = substring(@id, 
        string-length(@id) - string-length('detail_row_seek') + 1)]/td 
...