xpath 프로필_동력 노드 자바 학원 정리
노드(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 하위 요소를 동시에 선택하는 것을 나타냅니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
GAS(Google Apps Script)에서 정기적으로 값을 기록하는 프로그램을 만들어 보았습니다.Google 스프레드시트에서 특정 사이트의 특정 값을 XPath로 추출한 다음 해당 값을 GAS(Google Apps Script)로 정기적으로(1시간 동안) Google 스프레드시트의 별도 시트에 기록합니다. 가는...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.