수색…


특정 텍스트가있는 모든 요소 찾기

다음 XML을 상상해보십시오.

<root>
    <element>hello</element>
    <another>
        hello
    </another>
    <example>Hello, <nested> I am an example </nested>.</example>
</root>

다음 XPath 표현식은 다음과 같습니다.

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

<element>hello</element> 요소는 반환하지만 <another> 요소는 반환하지 않습니다. 이것은 <another> 요소가 hello 텍스트를 둘러싼 공백을 포함하기 때문입니다.

<element><another> 모두 검색하려면 다음을 사용할 수 있습니다.

//*[normalize-space(text()) = 'hello']

또는

//*[normalize-space() = 'hello']

비교를하기 전에 주위의 공백을 없앨 것입니다. 여기에서 normalize-space 사용할 때 text() 노드 지정자가 선택 사항임을 알 수 있습니다.

특정 텍스트를 포함 하는 요소를 찾으려면 contains 함수를 사용할 수 있습니다. 다음 표현식은 <example> 요소를 반환합니다.

//example[contains(text(), 'Hello')]

여러 어린이 / 텍스트 노드에 걸쳐있는 텍스트를 찾으려면 다음을 사용할 수 있습니다 . text() 대신에. . 요소의 전체 텍스트 내용과 그것의 자식을 참조합니다.

//example[. = 'Hello,  I am an example .']

여러 텍스트 노드를 보려면 다음을 사용할 수 있습니다.

//example//text()

그러면 다음과 같이 반환됩니다.

  • "여보세요, "
  • "나는 본보기 다."
  • "."

그리고 요소의 전체 텍스트 내용을 더 명확하게 보려면 string 함수를 사용할 수 있습니다.

string(//example[1])

또는 단지

string(//example)

안녕하세요, 저는 예입니다.

후자는 노드 집합이 string 과 같은 함수에 전달되면 XPath 1.0이 해당 노드 집합의 첫 번째 노드 (문서 순서대로)를보고 나머지는 무시하기 때문에 작동합니다.

그래서:

string(/root/*)

반환 할 것이다 :

여보세요



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow