2017-01-26 138 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