2011-04-09 58 views
2

我嘗試過幾種組合,但都沒有成功。該數據的完整xpath是.//*[@id='detail_row_seek_37878']/td問題是每個節點的數字部分'37878'發生了變化,因此我無法使用foreach循環遍歷節點。有沒有辦法使用通配符並將xpath簡化爲.//*[@id='detail wildcard,以繞過絕對值部分?我正在使用html敏捷包。Xpath和通配符

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

回答

14

提取不改變的部分:

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

相關技術和功能

要匹配的元素,其id屬性包含在第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 
+0

感謝您的答覆,你能向我解釋1和15代表什麼嗎?我想縮短它的細節,1,6不起作用。 – JRB 2011-04-09 20:26:55

+0

@JRB - 他們確定了所需子字符串的位置。但是,我很愚蠢,忘記了'開始'一分鐘。查看我的更新。 – 2011-04-09 20:39:58