반응형
XPath-node ()와 text ()의 차이점
text()
및 의 차이점을 이해하는 데 문제가 node()
있습니다. 내가 이해에서 text()
태그 사이에 무엇이든 될 것 <item>apple</item>
입니다 애플 이 경우이다. 노드는 실제로 그 노드가 무엇이든 될 것 입니다.
하지만 "생산중인 모든 항목의 텍스트를 선택하십시오"라는 질문과 "모든 부서의 모든 관리자 노드 선택"이라는 별도의 질문이있는 작업이 할당되었습니다.
출력은보기에 가정되는 방법 text()
에 반대node()
XML 스 니펫 :
<produce>
<item>apple</item>
<item>banana</item>
<item>pepper</item>
</produce>
<department>
<phone>123-456-7891</phone>
<manager>John</manager>
</department>
물론 더 많은 부서와 관리자가 있지만 이것은 코드의 일부일뿐입니다.
어떤 도움이라도 대단히 감사하겠습니다!
text()
하고 node()
있는 노드 테스트 의 XPath 용어 ( 비교 ).
노드 테스트는 노드 집합 ( 정확히 축 에서)에서 작동하며 특정 유형의 노드를 반환합니다. 축이 언급되지 않은 경우 child
기본적으로 축이 사용됩니다.
모든 종류의 노드 테스트가 있습니다 .
node()
모든 노드 와 일치 합니다 ( 모든 노드 중 최소 특정 노드 테스트).text()
텍스트 노드 만 일치comment()
주석 노드 와 일치*
모든 요소 노드 와 일치foo
이름이 지정된 모든 요소 노드와 일치"foo"
processing-instruction()
PI 노드와 일치합니다 (예 :)<?name value?>
.- 참고 : 은
*
애트리뷰트 노드와도 일치하지만attribute
축을 따라서 만 일치합니다 .@*
는attribute::*
. 속성은child
축의 일부가 아니므 로 법선*
이 속성을 선택하지 않습니다.
이 XML 문서 :
<produce>
<item>apple</item>
<item>banana</item>
<item>pepper</item>
</produce>
다음 DOM (간체)을 나타냅니다.
루트 노드 요소 노드 (name = "produce") 텍스트 노드 (값 = "\ n") 요소 노드 (name = "item") 텍스트 노드 (value = "apple") 텍스트 노드 (값 = "\ n") 요소 노드 (name = "item") 텍스트 노드 (value = "banana") 텍스트 노드 (값 = "\ n") 요소 노드 (name = "item") 텍스트 노드 (value = "pepper") 텍스트 노드 (값 = "\ n")
따라서 XPath를 사용하면 :
/
루트 노드를 선택/produce
selects a child element of the root node if it has the name"produce"
(This is called the document element; it represents the document itself. Document element and root node are often confused, but they are not the same thing.)/produce/node()
selects any type of child node beneath/produce/
(i.e. all 7 children)/produce/text()
selects the 4 (!) whitespace-only text nodes/produce/item[1]
selects the first child element named"item"
/produce/item[1]/text()
selects all child text nodes (there's only one - "apple" - in this case)
And so on.
So, your questions
- "Select the text of all items under produce"
/produce/item/text()
(3 nodes selected) - "Select all the manager nodes in all departments"
//department/manager
(1 node selected)
Notes
- The default axis in XPath is the
child
axis. You can change the axis by prefixing a different axis name. For example://item/ancestor::produce
- Element nodes have text values. When you evaluate an element node, its textual contents will be returned. In case of this example,
/produce/item[1]/text()
andstring(/produce/item[1])
will be the same. - Also see this answer where I outline the individual parts of an XPath expression graphically.
Select the text of all items under produce:
//produce/item/text()
Select all the manager nodes in all departments:
//department/*
ReferenceURL : https://stackoverflow.com/questions/11744465/xpath-difference-between-node-and-text
반응형
'programing' 카테고리의 다른 글
정수 값의 필수 속성 (0) | 2020.12.15 |
---|---|
C ++ 11 : 소유하지 않는 모든 원시 포인터를 std :: shared_ptr ()으로 바꾸시겠습니까? (0) | 2020.12.15 |
angularjs 앱에서 안전한 (!) 인증 시스템을 달성하는 방법은 무엇입니까? (0) | 2020.12.15 |
Java HashMap의 충돌 해결 (0) | 2020.12.15 |
LIMIT가 적용되기 전에 결과 수를 얻는 가장 좋은 방법 (0) | 2020.12.15 |