programing

내부 텍스트별 XPath 선택

cafebook 2023. 9. 20. 20:43
반응형

내부 텍스트별 XPath 선택

구문 분석된 XML 문서에서 특정 내부 텍스트를 가진 요소를 추출하려고 합니다.특정 내부 텍스트를 가진 자식이 있는 요소를 선택할 수 있다는 것을 알고 있습니다.//myparent[mychild='foo'], 하지만 사실 이 예제에서 "my child" 요소를 선택하고 싶습니다.

<myparent>
  <mychild>
    foo
  </mychild>
</myparent>

"my child" 노드를 반환하는 "foo"에 대한 XPath 쿼리는 무엇입니까?

이거 먹어봤어요?

//myparent/mychild[text() = 'foo']

또는 바로 가기 키를 사용하여self축:

//myparent/mychild[. = 'foo']

매트가 말했지만, 완전한 해결책은:

//myparent[mychild='foo']/mychild

사용하는 것을 고려해 볼 수 있습니다.contains다음과 같이 테스트가 발견된 경우 true/false를 반환하는 기능:

//mychild[contains(text(),'foo')]

함수 참조는 XSLT, XPath 및 XQuery 함수 참조

HTML에 따라:

<myparent>
  <mychild>
    foo
  </mychild>
</myparent>

<mychild>foo가 상위 항목 내에 있는 텍스트를 포함된 요소<myparent> tag 및 텍스트에는 선두공백 문자가 포함됩니다.

그래서 선택하기 위해서는<mychild>element는 다음 솔루션 중 하나를 사용할 수 있습니다.

  • 사용.normalize-space():

    //myparent/mychild[normalize-space()='foo']
    
  • 사용.contains():

    //myparent/mychild[contains(., 'foo')]
    

부모 무시하기<myparent>태그를 사용할 수도 있습니다.

  • 사용.normalize-space():

    //mychild[normalize-space()='foo']
    
  • 사용.contains():

    //mychild[contains(., 'foo')]
    

언급URL : https://stackoverflow.com/questions/1998681/xpath-selection-by-innertext

반응형