Xpath 모든 자식 노드 선택

html html-agility-pack xpath

문제

이 html에서 모든 자식 노드 (옵션 태그)를 선택해야합니다.

<select name="akt-miest" id="onoffaci">
<option value="a_0">VÅ¡etci</option>
<option value="a_1">Iba prihlásení</option>
<option value="a_5" selected="selected">Teraz na Pokeci</option>

<optgroup label="Hlavné miestnosti">

<option value="m_13">&nbsp;&nbsp;&nbsp;Bez záväzkov</option>
<option value="m_9">&nbsp;&nbsp;&nbsp;Do pohody</option>
<option value="m_39">&nbsp;&nbsp;&nbsp;Dámsky klub</option>

</optgroup>

나는 HTML 민첩성 팩을 사용한다.

나는 이것을 시도한다 :

<select name="akt-miest" id="onoffaci">
<option value="a_0">VÅ¡etci</option>
<option value="a_1">Iba prihlásení</option>
<option value="a_5" selected="selected">Teraz na Pokeci</option>

<optgroup label="Hlavné miestnosti">

<option value="m_13">&nbsp;&nbsp;&nbsp;Bez záväzkov</option>
<option value="m_9">&nbsp;&nbsp;&nbsp;Do pohody</option>
<option value="m_39">&nbsp;&nbsp;&nbsp;Dámsky klub</option>

</optgroup>

하지만 xpath에 유효하지 않은 토큰이 있다는 오류가 발생합니다. 나쁜 무엇입니까?

예 :

<select name="akt-miest" id="onoffaci">
<option value="a_0">VÅ¡etci</option>
<option value="a_1">Iba prihlásení</option>
<option value="a_5" selected="selected">Teraz na Pokeci</option>

<optgroup label="Hlavné miestnosti">

<option value="m_13">&nbsp;&nbsp;&nbsp;Bez záväzkov</option>
<option value="m_9">&nbsp;&nbsp;&nbsp;Do pohody</option>
<option value="m_39">&nbsp;&nbsp;&nbsp;Dámsky klub</option>

</optgroup>

나는 가치 (a_0)와 텍스트를 얻을 필요가있다.

그래서 나는 이드 (Id)가 선택한 첫 번째 접근을 시도한다.

수락 된 답변

나는 이것을 시도한다 :

var selectNode = htmlDoc.GetElementbyId("onoffaci");   
var nodes = selectNode.SelectNodes("option::*"); 

하지만 xpath에 유효하지 않은 토큰이 있다는 오류가 발생합니다. 나쁜 무엇입니까?

분명한 문제는

option::*

option::* 는 "옵션"축의 모든 노드를 의미합니다. 그러나 XPath에는 "옵션 축"이 없습니다.

당신이 원하는 :

var selectNode = htmlDoc.GetElementbyId("onoffaci");   
var nodes = selectNode.SelectNodes("option::*"); 

그러면 현재 노드의 하위 노드 인 모든 option 요소가 선택됩니다.

이것을 하나의 XPath 표현식에 작성 하고 getElementbyId() 호출을 생략 할 수 있습니다 .

var selectNode = htmlDoc.GetElementbyId("onoffaci");   
var nodes = selectNode.SelectNodes("option::*"); 

사용 :

var selectNode = htmlDoc.GetElementbyId("onoffaci");   
var nodes = selectNode.SelectNodes("option::*"); 

그러면 값이 'onoffaci'id 속성과 XML 문서의 모든 select 요소의 하위 인 모든 option 요소의 모든 텍스트 노드가있는 XML 문서의 모든 select 요소의 하위 요소 인 모든 option 요소의 모든 value 속성이 선택됩니다 'onoffaci' 값을 가진 id 속성을 가지고 있습니다.

option 요소에 대해 @valuetext() 를 얻으려면 결과를 반복해야합니다.

또는:

var selectNode = htmlDoc.GetElementbyId("onoffaci");   
var nodes = selectNode.SelectNodes("option::*"); 

여기서 관심있는 option 요소가 상위 요소의 첫 번째 option 하위 요소라는 관찰을 사용합니다. 이제 원하는 value 요소와 원하는 option 요소의 텍스트 노드 만 선택합니다.




아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.