xpath 프로필_동력 노드 자바 학원 정리

3395 단어 xpath소개
쉽게 말하면 xpath는 XML 파일의 노드를 선택하는 방법입니다.
노드(node)란 XML 파일의 최소 구성 단위로서 모두 7가지로 나뉜다.
- element(요소 노드)
- attribute(속성 노드)
- text(텍스트 노드)
- namespace(이름 공간 노드)
- processing-instruction(처리 명령 노드)
- comment(주석 노드)
- root(루트 노드)
xpath는 이 7가지 노드를 선택할 수 있습니다.그러나 아래의 노트는 가장 자주 사용하는 첫 번째 요소(원소 노드)만 다루기 때문에 아래의 노드와 원소를 동의어로 볼 수 있다.
1. xpath 표현식의 기본 형식
xpath는 경로 표현식(Path Expression)을 통해 노드를 선택합니다.형식적으로 경로 표현식은 전통적인 파일 시스템과 매우 유사하다.
# 슬래시(/)는 경로 내부의 분할자로 사용됩니다.
# 동일한 노드에는 절대 경로와 상대 경로 두 가지 쓰기 방법이 있습니다.
# 절대 경로(absolute path)는 "/"로 시작해야 하며, 뒤에 루트 노드, 예를 들어/step/step/...
# 상대 경로(relative path)는 절대 경로를 제외한 다른 쓰기입니다. 예를 들어 step/step, 즉 "/"를 사용하지 않습니다.
# "."현재 노드를 나타냅니다.
# ".."현재 노드를 나타내는 상위 노드
2. 노드 선택의 기본 규칙
- nodename(노드 이름): 노드를 선택한 모든 하위 노드를 나타냅니다.
- "/": 루트 노드 선택
- "//": 원하는 위치를 선택하는 노드를 나타냅니다.
- "@": 속성을 선택했음을 나타냅니다.
3. 노드 선택 실례
먼저 XML 인스턴스 문서를 봅니다.

<?xml version="1.0" encoding="ISO-8859-1"?>
<bookstore>
 <book>
  <title lang="eng">Harry Potter</title>
  <price>29.99</price>
 </book>
 <book>
  <title lang="eng">Learning XML</title>
  <price>39.95</price>
 </book>
</bookstore>
[예1]
bookstore:bookstore 요소의 모든 하위 노드를 선택합니다.
[예2]
/bookstore: 루트 노드bookstore를 선택하십시오. 이것은 절대 경로 쓰기입니다.
[예 3]
bookstore/book:bookstore에 속하는 모든 하위 요소의book 요소를 선택하십시오. 이것은 상대적인 경로 쓰기입니다.
[예 4]
//book: 문서의 위치에 관계없이 모든 책 하위 요소를 선택합니다.
[예 5]
bookstore//book: bookstore 요소에 속하는 모든 후손의book 요소를 선택하고, bookstore 아래에 있는 어떤 위치에 있든지.
[예 6]
//@lang: lang이라는 모든 속성을 선택합니다.
넷째, xpath의 술어 조건(Predicate)
이른바'술어 조건'은 경로 표현식에 대한 추가 조건이다.
모든 조건은 네모난 괄호 "[]"에 쓰여 노드를 더욱 선별하는 것을 나타낸다.
[예 7]
/bookstore/book[1]:bookstore의 첫 번째 책 하위 요소를 선택하는 것을 나타냅니다.
[예 8]
/bookstore/book[last()]:bookstore의 마지막 책 하위 요소를 선택하는 것을 나타냅니다.
[예9]
/bookstore/book[last()-1]:bookstore의 꼴찌에서 두 번째 책 하위 요소를 선택하는 것을 나타냅니다.
[예 10]
/bookstore/book[position()<3]:bookstore의 두 번째 책 하위 요소를 선택하는 것을 나타냅니다.
[예 11]
//title[@lang]:lang 속성이 있는 모든 title 노드를 선택하십시오.
[예 12]
//title[@lang='eng']: 모든lang 속성을 선택하는 값이 "eng"의 title 노드와 같다는 것을 나타냅니다.
[예13]
/bookstore/book[price]: bookstore의 책 하위 요소를 선택하고 선택된 책 요소는price 하위 요소가 있어야 합니다.
[예 14]
/bookstore/book[price>35.00]:bookstore의book 하위 요소를 선택하고 선택된book 요소의price 하위 요소 값은 35보다 커야 합니다.
[예 15]
/bookstore/book[price>35.00]/title: 예14 결과에 집중하여 title 서브 요소를 선택하는 것을 나타냅니다.
[예 16]
/bookstore/book/price [.>35.00]: 선택 값이 35보다 큰 "/bookstore/book"의price 하위 요소를 나타냅니다.
5. 와일드카드
# "*"은 모든 요소 노드와 일치함을 나타냅니다.
# "@*"은 모든 속성 값과 일치합니다.
# node()는 모든 유형의 노드와 일치합니다.
[예 17]
//*: 문서의 모든 요소 노드를 선택합니다.
[예 18]
/*/*: 두 번째 레이어의 요소 노드를 모두 선택했음을 나타냅니다.
[예 19]
/bookstore/*: bookstore의 모든 요소 하위 노드를 선택하는 것을 나타냅니다.
[예 20]
//title[@*]: 속성이 있는 모든 title 요소를 선택합니다.
6. 여러 경로 선택
"|"을 사용하여 여러 병렬 경로를 선택합니다.
[예 21]
//book/title |/book/price:book 요소의 title 하위 요소와price 하위 요소를 동시에 선택하는 것을 나타냅니다.

좋은 웹페이지 즐겨찾기