development

XPath-값과 동일한 요소 선택

big-blog 2020. 8. 28. 07:52
반응형

XPath-값과 동일한 요소 선택


Xpath에서 특정 값과 동일한 요소를 선택하고 싶습니다.

샘플 XML 데이터 :

<aaa id="11" >
    <aaa id="21" >
        <aaa id="31" ></aaa>
        <bbb id="32" >
            <aaa id="41" ></aaa>
            <bbb id="42" ></bbb>
            <ccc id="43" ></ccc>
            <ddd id="44" >qwerty</ddd>
            <ddd id="45" ></ddd>
            <ddd id="46" ></ddd>
        </bbb>
    </aaa>
    <bbb id="22" >
         <aaa id="33" >qwerty</aaa>
         <bbb id="34" ></bbb>
         <ccc id="35" ></ccc>
         <ddd id="36" ></ddd>
         <ddd id="37" ></ddd>
         <ddd id="38" ></ddd>
    </bbb>
    <ccc id="23" >qwerty</ccc>
    <ccc id="24" ></ccc>
 </aaa>

이제 XPath를 사용합니다.

//ccc[.='qwerty']

올바른 예상 결과를 얻습니다 .

Name    Value
ccc     qwerty

이제 XPath를 사용합니다.

//aaa[.='qwerty']

내가 얻을 예상치 못한 결과를 :

Name    Value
aaa      
aaa     qwerty

제가 특히 관심이 있는 것은 해당 값을 가진 요소 를 선택 하는 방법 입니다.

XPath :

//*[.='qwerty']

나는 매우 이상한 예기치 않은 결과를 얻습니다 .

Name    Value
aaa
bbb
ddd     qwerty
bbb     qwerty
aaa     qwerty
ccc     qwerty

누군가 이러한 결과를 설명하고 더 많은 예상 결과를 얻기 위해 XPath 표현식을 수정하는 방법을 설명 할 수 있습니까?


XPath 사양. 요소 문자열 값 을 모든 텍스트 노드 하위 항목의 연결 (문서 순서)로 정의합니다 .

이것은 "이상한 결과"를 설명합니다.

아래 표현식을 사용하여 "더 나은"결과를 얻을 수 있습니다.

//*[text() = 'qwerty']

위의 코드는 값이 'qwerty'인 텍스트 노드 자식이 하나 이상있는 문서의 모든 요소를 ​​선택합니다.

//*[text() = 'qwerty' and not(text()[2])]

위는 텍스트 노드 자식이 하나만 있고 그 값이 'qwerty'인 문서의 모든 요소를 ​​선택합니다.


시험

//*[text()='qwerty']때문에 .당신입니다 현재 요소

참고 URL : https://stackoverflow.com/questions/3206975/xpath-selecting-elements-that-equal-a-value

반응형