2013-02-20 11 views
0

我上面有兩個鏈接的HTML頁面,具有相似的鏈接文字:的XPath無法區分類似的鏈接文字

如果「記錄的布魯克林辦公室」 記錄的辦公室「我使用這個xpath,它會找到第二個鏈接: 「//a[starts-with(.,'Brooklyn')]」 - 到目前爲止這麼好。

但是,如果使用相同的xpath,但要查找第一個鏈接(以「Office」開頭),它不起作用: 「//a[starts-with(.,'Office') ]「 - '無法找到元素'

我嘗試過使用正則表達式('^ Office'),但是沒有奏效。 我嘗試'包含'而不是'starts-with',但這也不起作用,因爲一個字符串是另一個字符串的子字符串。

歡迎任何建議!

編輯

我讀的規範,這是因爲我認爲這是可行的:如果字符串2以string2開始,則返回true:啓動 - 與(字符串1,字符串)

我嘲笑了一些XML在在線測試儀測試:

<?xml version="1.0"?> 
    <note> 
     <record> 
      <a>Office</a> 
      <a>Brooklyn Office</a> 
     </record> 
    </note> 

我已經通過「開始,以」發現沒有辦法指向第一個節點(「辦公室」),或「包含」

+0

採取在HTML的密切關注,並驗證了第一個鏈接的文本實際上「辦公室」開始,沒有空格或其他角色在開始。 – parsifal 2013-02-20 19:49:02

+0

文本已被驗證。我也在一個在線的xpath測試器(http://www.xpathtester.com/test)中測試了它,並且它返回了相同的結果;開始 - 實際上並不像名稱所暗示的那樣做'。 – user973718 2013-02-20 20:01:12

+0

這裏是規範:http://www.w3.org/TR/1999/REC-xpath-19991116/#function-starts-with – parsifal 2013-02-20 20:09:01

回答

0

問題SOLV ED! 所以,這並不工作: //a[starts-with(.,'Office ')]

該做的事: /*/record/a[starts-with(.,'Office') ]

0

//a[text()='Office of Records']//a[text()='Brooklyn Office of Records']

不要過於複雜的東西;)