2017-01-26 186 views
-1

我想獲得「square」的值(例如201)。我試圖這樣做,因爲描述here,但它不工作:通過值選擇XPath

./li[attributeTitle='Этаж'] 

HTML代碼:

<div class = "A"> 
    <ui class = "B"> 
     <li> 
      <span class = "attributeTitle"> Floor </span> 
      <span class = "attributeValue"> 3 </span> 
     </li> 
     <! A random more items "li" > 
     <li> 
      <span class = "attributeTitle"> Square </span> 
      <span class = "attributeValue"> 201 </span> 
     </li> 
     <li> 
      <span class = "attributeTitle"> Nrooms </span> 
      <span class = "attributeValue"> 4 </span> 
     </li> 
    </ui> 
</div> 

感謝您的幫助。

+0

它是如何工作的?你期望什麼,你看到了什麼? –

+0

請顯示一個完整的,但最小的輸入HTML文檔。謝謝。更多幫助:http://stackoverflow.com/help/mcve。 –

回答

1

可以使用功能的XPath查詢文本是否包含了一些字符串:

"//div[@class='attributeTitle'][contains(text(),'Square')]" 

這可以讓你的節點:

<span class = "attributeTitle"> Square </span> 

爲了得到這是正確的它下面的值節點您可以使用following-sibling::span

"//div[@class='attributeTitle'][contains(text(),'Square')]/following-sibling::span[1]" 

並加入[1]以表明我們只想要第一個兄弟姐妹,以防有多個兄弟姐妹。你也可以使用[class='attributeValue']來表示我們只想要擁有這個特定類的兄弟姐妹,或者如果你相信只有1個兄弟姐妹,那麼就根本不使用任何東西。

+0

'// div [@ class ='attributeTitle'and contains(text(),'Square')]''也可以工作 – becixb

+0

如果你發佈的是完整的DOM,那麼在獲取[1]因爲方形元素之後只有一個跨度節點 – becixb