Xpath и подстановочные знаки

c# html-agility-pack html-parsing screen-scraping xpath

Вопрос

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

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

Принятый ответ

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

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

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

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

//*[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 



Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему