2012-07-16 9 views
1

페이지 HTML에서 이름에 몇 가지 하위 노드가 포함 된 여러 HTML 링크가 있습니다.다중 기준을 사용하는 xpath를 사용하여 HTML 링크 요소를 선택하는 방법

그 중 하나만 검색하고 싶습니다. 다음

<a href='foo'> 
    <b>Bar</b> 
    <div style="height: 18px;">Garbo</div> 
</a> 

을 대상으로, 나는 XPath는과 정확한하려는 : "그들은 분리 된 서브 노드에있는 경우, 더 문제"가르보 "로"바 "나에게 모두 포함되어있는 링크를 가져 없습니다."

나는이 하나를 시도하지만, contains 기능에 대한 몇 가지 기사를 읽은 후,이 라인이 작동하지 않을 수 있습니다 :

//a[contains(text(),"Bar") and contains(text(),"Garbo")] 

은 무엇 수정 내 요구 사항을 충족 할 수 있도록 수 있을까?

//a[descendant::text()[contains(., 'Bar')] 
    and 
    descendant::text()[contains(., 'Garbo')] 
    ] 

이는 문자열을 "포함하는 자손 (아이뿐만 아니라) 텍스트 노드가있는 모든 a 요소를 선택 :

답변

4

사용할 필요가있는 선택은

//a[./*[contains(text(),"Bar")] and ./*[contains(text(),"Garbo")]] 
+1

당신은 선택기를 테스트 할 http://www.mizar.dk/XPath/Default.aspx을 사용하실 수 있습니다 – JohnC

1

사용입니다 Bar "와 문자열"Garbo "가 포함 된 자손 텍스트 노드가 있습니다.

이 원하는 a 요소도 다음과 같은을 선택했을 :

<a href='foo'> 
    <b><i>Bar</i></b> 
    <div style="height: 18px;"><span>Garbo</span></div> 
</a> 
관련 문제