xpath
특정 텍스트를 포함하는 요소 찾기
수색…
특정 텍스트가있는 모든 요소 찾기
다음 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