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

감사합니다.

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

이 당신에게이 노드를 가져옵니다 :

+0

어떻게 작동합니까? 당신은 무엇을 기대하며 대신에 무엇을 보았습니까? –

+0

완전한, 그러나 최소한의 입력 HTML 문서를 보여주십시오. 감사. 추가 도움말 : http://stackoverflow.com/help/mcve. –

답변

1

당신은 텍스트 일부 문자열이 포함되어 있는지 여부를 확인하기 위해 XPath는에 contains() 기능을 사용할 수 있습니다

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

가 바로 아래에있는 값 노드를 얻으려면 당신 following-sibling::span를 사용할 수 있습니다

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

그리고추가은 형제가 둘 이상인 경우에 대비하여 첫 번째 형제 만 원한다는 것을 나타냅니다. 또한 [class='attributeValue']을 사용하여이 특정 클래스가있는 형제 만 필요하다는 것을 나타내거나 형제가 하나만있을 것이라고 믿는 경우에는 아무것도 사용하지 않도록 할 수 있습니다.

+0

'/ div [@ class = 'attributeTitle'및 (text(), 'Square')] '도 포함합니다. – becixb

+0

게시 한 내용이 전체 DOM 인 경우에도 가져올 때 [1] 필요하지 않습니다. square 요소 다음에 단 하나의 span 노드가 있기 때문에 값이됩니다. – becixb