본문 바로가기

QA/Selenium

What is Xpath?

728x90

개요

Xpath(XML Path Language)XML의 요소와 속성들을 탐색하고 추출하는 표준 경로 언어이다.

Xpath를 사용하면 XML 문서의 데이터를 분석하고 문서의 특정 노드에 접근할 수 있으며,

Javascript, JAVA, Python 등 여러 가지 언어에서 사용될 수 있는 도구이다.

 

Xpath 표현식은 경로나 패턴을 사용해 XML 문서의 노드를 선택할 수 있다.

Xpath는 특정 노드를 선택하기 위해 여러 가지 연산자와 함수를 제공한다.

예를 들어, 특정 요소의 자식 노드를 선택하기 위해서 "/" 연산자를 사용하고,

모든 요소를 선택하기 위해서는 "//" 연산자를 사용한다.

또한, Xpath는 속성 값으로 필터링하거나 요소의 위치를 기준으로 필터링하는 기능도 제공한다.

Xpath 예시

아래와 같은 XML 문서를 Xpath를 사용해 탐색해 보겠다.

<?xml version="1.0" encoding="UTF-8"?>
<bookstore>
  <book category="COOKING">
    <title lang="en">Everyday Italian</title>
    <author>Giada De Laurentiis</author>
    <year>2005</year>
    <price>30.00</price>
  </book>
  <book category="CHILDREN">
    <title lang="en">Harry Potter</title>
    <author>J K. Rowling</author>
    <year>2005</year>
    <price>29.99</price>
  </book>
  <book category="WEB">
    <title lang="en">XQuery Kick Start</title>
    <author>James McGovern</author>
    <author>Per Bothner</author>
    <author>Kurt Cagle</author>
    <author>James Linn</author>
    <author>Vaidyanathan Nagarajan</author>
    <year>2003</year>
    <price>49.99</price>
  </book>
  <book category="WEB">
    <title lang="en">Learning XML</title>
    <author>Erik T. Ray</author>
    <year>2003</year>
    <price>39.95</price>
  </book>
</bookstore>

1. 문서 내의 루트 노드를 선택

/
# 결과 bookstore

 

2. 문서 내의 모든 book 노드를 선택

/bookstore/book
# 결과
book (4개)

 

3. 문서 내의 모든 title 속성을 선택

//title/@title
#결과
Everyday Italian
Harry Potter
XQuery Kick Start
Learning XML

 

4. 문서 내의 첫 번째 book 노드의 author 속성을 선택

(/bookstore/book)\[1\]/author
# 결과
Giada De Laurentiis

 

5. 문서 내의 price 속성 값이 35.00보다 큰 book 노드를 선택

/bookstore/book\[price>35.00\]
# 결과
book (2개)

 

6. 문서 내의 genre 속성 값이 "Novel"인 book 노드를 선택 (없는 속성)

//book\[genre="Novel"\]
# 결과
없음

위와 같은 XPath 구문은 XML 문서의 노드와 속성을 검색하고 선택하는 데 사용된다.

Xpath 함수

Xpath 에서 함수는 앞서 말했든 여러 가지가 있다.

그중에서 Node 탐색에 사용되는 Contains와 Normalize-space의 사용방법을 알아보겠다.

 

1. Contains 는 속성의 특정 문자열이 포함된 정보를 찾을 때 사용한다.

//book[contains(author, "Doe")]

 

2. Normalize-space는 특정 문자열이 해당 속성 값인 정보를 찾을 때 사용한다.

//book[normalize-space(author)="John Doe"]

XPath는 XML 문서에서 정보를 검색하고 추출하는데 매우 편리한 방법이다.
기본적인 구문과 함수를 익히면, 다양한 요구사항에 따라 유연하게 사용할 수 있다.