이것이 (간체) 있다고 가정합니다.
<form id="myform">
<!-- some input fields -->
<input type="submit" value="proceed"/>
</form>
그런 다음 XPath로 제출 버튼을 선택할 수 있습니다 //form[@id='myform']/input[@type='submit']
. 큰.
그러나 내 템플릿이 변경 될 수 있으며 제출 버튼이있는 깊이를 유연하게 만들고 싶습니다. 다음과 같이 테이블에 넣을 수 있습니다.
<form id="myform">
<!-- some input fields -->
<table><tr><td>
<input type="submit" value="proceed"/>
</td></tr></table>
</form>
나는 손자 인 요소를 선택할 수 있다는 것을 알고 있지만, 어떤 깊이의 손자 손녀 …- 자녀를 선택할 수는 없습니다. 예 :
//form[@id='myform']/*/input[@type='submit']
더 이상 깊이가 아닌 손자 만 선택합니다.//form[@id='myform']/*/*/input[@type='submit']
더 이상 또는 더 적은 깊이가 아닌 손자 손녀 만 선택합니다.//form[@id='myform']/**/input[@type='submit']
유효하지 않습니다.
그렇다면 요소 ID를 사용하지 않고 어떻게이 제출 버튼을 안정적으로 선택합니까?
답변
거의 완료되었습니다. 간단히 사용 :
//form[@id='myform']//input[@type='submit']
//
바로 가기는 식 내에서 사용할 수 있습니다.
답변
XmlDocument 및 XmlNode를 사용하는 경우.
말하다:
XmlNode f = root.SelectSingleNode("//form[@id='myform']");
사용하다:
XmlNode s = f.SelectSingleNode(".//input[@type='submit']");
사용하는 도구에 따라 다릅니다. 그러나 .//는 참조 노드에서 모든 자식, 깊이를 선택합니다.
답변
//form/descendant::input[@type='submit']
답변
또한 CSS 선택기로 할 수 있습니다.
form#myform input[type='submit']
css elector에서 요소 사이의 공백은 상위 양식의 모든 깊이에서 해당 요소를 검색하는 것을 의미합니다. # myform 요소