2009-11-06 5 views
1

예, 나는XPath의 태그에서 알 수없는 레벨의 노드를 어떻게 선택할 수 있습니까?

<form name="blah"> 
    <input name="1"/> 
    <input name="2"/> 
    <table> 
     <tr> 
     <td> 
      <unkown number of levels more> 
      <input name="3"/> 
     </td> 
     </tr> 
    <table> 
</form> 

가 어떻게 함께 입력 1, 2, 3을 반환하는 쿼리를 넣을 수있는 경우?

편집 : 난 그냥 특정 형태의 어린이 모든 입력 요소를 원하므로 "//"는 바로 밖으로, 내가 페이지의 모든 입력 요소를 잡아에 관심이 아니에요주의해야한다.

답변

7

수준에 관계없이 //을 사용하여 검색하십시오. 이것은 "값 비싼"검색이라는 것을 명심하십시오. 따라서 더 많은 컨텍스트를 지정할 수 있으면 더 빠른 XPath가이를 호출 할 수 있습니다.

/html/path/to/form//input 

이 바람직하다. 당신이 양식의 맥락에 있다면, 더 나아질 것입니다. 그렇게,

form[@name='blah']//input 
+0

아 감사합니다. –

2

계층 구조에 관계없이 모든 입력 요소를 선택하는 이중 슬래시 (//input)를 사용하십시오.

양식 요소에 모든 입력 태그를 사용하려면 // 양식/입력 /form//input을 사용하십시오.

편집 : 그래, 고마워 Kragen.

+0

에만 폼 요소의 직접적인 자손 요소를 반환합니다 : 당신은 단지 'ㅋ'형태의 아이를 원

form//input 

또는 경우 : XPath 쿼리는 더 같을 것이다 위의 예 1과 2는 아니지만 3입니다. – Justin

관련 문제