pat coding

[ Xpath ] Xpath란? 본문

Etc

[ Xpath ] Xpath란?

uuukpyo 2019. 12. 2. 18:41
728x90

Xpath 란?

XML 문서의 특정 요소나 속성에 접근하기 위한 경로를 지정하는 언어

 

1. 노드의 형식

1. 루트 노드(root node) : xml 자체를 표현하는 가상 노드

2. 요소 노드(element node) : 태그 

3. 텍스트 노드(text node) : 태그 내용

4. 속성 노드(attribute node) : 속성

5. 주석 노드(comment node) : 주석문

6. 네임스페이스 노드(namespace node) : xmlns: 로 시작하는 태그

7. 처리 명령 노드(processing instruction node) : <? 태그로 시작하는 것

 

2. 위치경로


1. 노드 이름

- 해당 노드이름과 일치하는 모든 노드를 선택

2.  /

- 루트 노드부터 순서대로 탐색

3.  //

- 현재 노드의 위치와 상관없이 지정된 노드에서부터 순서대로 탐색

4. .

- 현재 노드를 선택

5. ..

- 현재 노드의 부모 노드를 선택

6. @

- 속성 노드를 선택


3. 위치경로 예제


developer            : <developer>요소를 모두 선택함.

/p_languages         : 루트 노드의 자식 노드인 <p_languages>요소를 선택함. (절대 경로 탐색)

p_languages/language : <p_languages>요소의 자식 노드 중 <language>요소를 모두 선택함. (상대 경로 탐색)

//                   : 루트 노드의 하위 노드를 모두 선택함.

//priority           : 위치에 상관없이 <priority>요소를 모두 선택함.

.//                  : 현재 노드의 하위 노드를 모두 선택함.

version/@status      : 모든 <version>요소의 status 속성 노드를 모두 선택함.


4. 문법 및 예제


1. contains : 포함 하는 값을 찾아줌
'//div[contains(@class,"class명")]'
- div에서 class명이 포함하는 요소 선택

2. last : 마지막 값을 찾아줌
'//div(@class="class명")/a[last()]'
- div에서 class명으로 된 것들 밑에 있는 a 태그 여러개중 마지막 요소 선택

3. not
'img[contains(@class, "alpha") and not(contains(@class, 'beta'))]'
- class에 "beta"라는 값이 없으면서 "alpha"클라스를 포함한 이미지 선택

4. and
'img[contains(@class, "alpha") and contains(@class, "beta")]'
- class에 "alpha"라는 값과 "beta"라는 값을 모두 포함한 이미지 선택

5. or
'img[contains(@class, "alpha") or contains(@class, "beta")]'
- "alpha"라는 클라스을 가진 이미지 또는 "beta"라는 클라스을 가진 이미지 선택

6. position
'//div(@class="class명")/a[position() > 1]'
- div에서 class명으로 된 것들 밑에 있는 a 태그 여러개중 첫번째를 제외한 요소 선택 


5. 추가 활용 예제

 


 

추가 참고 자료 : https://devhints.io/xpath

728x90

'Etc' 카테고리의 다른 글

CURL 통신  (1) 2020.08.07
images BASE64 encode, decode  (1) 2020.04.21
Watir 란?  (1) 2020.01.15
[HTML] 속성(id, class, name)  (0) 2019.12.23
[T-MAP API]검색어를 통한 지도검색  (4) 2019.11.12
Comments