XPath(XML Path Language)๋ XML ๋ฌธ์์์ ๋
ธ๋์ ๊ฐ์ ์ ํํ๊ธฐ ์ํ ์ฟผ๋ฆฌ ์ธ์ด์
๋๋ค. Apidog์์๋ XPath๋ฅผ ์ฌ์ฉํ์ฌ XML API ์๋ต์์ ๋ฐ์ดํฐ๋ฅผ ์ถ์ถํ๊ณ , XML ๊ตฌ์กฐ๋ฅผ ๊ฒ์ฆํ๋ฉฐ, XML ๊ธฐ๋ฐ API์ ๋ํ ์ด์์
์ ์์ฑํฉ๋๋ค.๋ฌธ์ ๊ณ์ธต ๊ตฌ์กฐ๋ฅผ ๋ฐ๋ผ ๊ฒฝ๋ก ๋๋ ์ผ๋ จ์ ๋จ๊ณ๋ฅผ ์ง์ ํ์ฌ XML ๋ฌธ์์ ๋
ธ๋ ๋๋ ๋
ธ๋ ์งํฉ์ ์ ํํ ์ ์์ต๋๋ค.XML ์์#
๋ค์ ์์์์๋ ์ด XML ๋ฌธ์๋ฅผ ์ฌ์ฉํ๊ฒ ์ต๋๋ค.<?xml version="1.0" encoding="UTF-8"?>
<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>
๋
ธ๋ ์ ํ#
XPath๋ฅผ ์ฌ์ฉํ๋ฉด ๊ฒฝ๋ก ๋๋ ๋จ๊ณ๋ฅผ ๋ฐ๋ผ XML ๋ฌธ์์ ๋
ธ๋ ๋๋ ๋
ธ๋ ์งํฉ์ ์ ํํ ์ ์์ต๋๋ค. ์๋๋ ๊ฐ์ฅ ์ผ๋ฐ์ ์ธ ๊ฒฝ๋ก ํํ์ ์ค ์ผ๋ถ์
๋๋ค.| ํํ์ | ์ค๋ช
|
|---|
nodename | ์ด ๋
ธ๋์ ๋ชจ๋ ์์์ ์ ํํฉ๋๋ค |
/ | ๋ฃจํธ ๋
ธ๋์์ ์ ํํฉ๋๋ค |
// | ํ์ฌ ๋
ธ๋์์ ์ ํ ์กฐ๊ฑด๊ณผ ์ผ์นํ๋ ๋ฌธ์ ๋ด ๋
ธ๋๋ฅผ ์์น์ ๊ด๊ณ์์ด ์ ํํฉ๋๋ค |
. | ํ์ฌ ๋
ธ๋๋ฅผ ์ ํํฉ๋๋ค |
.. | ํ์ฌ ๋
ธ๋์ ๋ถ๋ชจ ๋
ธ๋๋ฅผ ์ ํํฉ๋๋ค |
@ | ์์ฑ์ ์ ํํฉ๋๋ค |
๊ฒฝ๋ก ํํ์ ์์#
๋ค์ ํ๋ ์์ XML์ ๊ธฐ์ค์ผ๋ก ๊ฒฝ๋ก ํํ์๊ณผ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์ฌ ์ค๋๋ค.| ๊ฒฝ๋ก ํํ์ | ๊ฒฐ๊ณผ |
|---|
bookstore | bookstore ์์์ ๋ชจ๋ ์์์ ์ ํํฉ๋๋ค |
/bookstore | ๋ฃจํธ ์์ bookstore๋ฅผ ์ ํํฉ๋๋ค. ๊ฒฝ๋ก๊ฐ ์ฌ๋์( / )๋ก ์์ํ๋ ๊ฒฝ์ฐ, ์ด ๊ฒฝ๋ก๋ ํญ์ ์์์ ๋ํ ์ ๋ ๊ฒฝ๋ก๋ฅผ ๋ํ๋
๋๋ค |
bookstore/book | bookstore์ ์์์ธ ๋ชจ๋ book ์์๋ฅผ ์ ํํฉ๋๋ค |
//book | ๋ฌธ์ ๋ด ์์น์ ๊ด๊ณ์์ด ๋ชจ๋ book ์์๋ฅผ ์ ํํฉ๋๋ค |
bookstore//book | bookstore ์๋ ์ด๋์ ์์นํ๋ bookstore ์์์ ์์์ธ ๋ชจ๋ book ์์๋ฅผ ์ ํํฉ๋๋ค |
//@lang | lang์ด๋ผ๋ ์ด๋ฆ์ ๋ชจ๋ ์์ฑ์ ์ ํํฉ๋๋ค |
์ ๋ ๊ฒฝ๋ก์ ์๋ ๊ฒฝ๋ก
/๋ก ์์ํ๋ ๊ฒฝ๋ก๋ ์ ๋ ๊ฒฝ๋ก(๋ฃจํธ์์ ์์)์ด๋ฉฐ, /๊ฐ ์๋ ๊ฒฝ๋ก๋ ํ์ฌ ๋
ธ๋๋ฅผ ๊ธฐ์ค์ผ๋ก ํ๋ ์๋ ๊ฒฝ๋ก์
๋๋ค.
์กฐ๊ฑด์#
์กฐ๊ฑด์๋ฅผ ์ฌ์ฉํ์ฌ ํน์ ๋
ธ๋ ๋๋ ์ง์ ๋ ๊ฐ์ ํฌํจํ๋ ๋
ธ๋๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค. ์กฐ๊ฑด์๋ ๋๊ดํธ๋ก ๋ฌถ์ผ๋ฉฐ ๊ฐ๋ ฅํ ํํฐ๋ง์ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค.์กฐ๊ฑด์ ์์#
| ๊ฒฝ๋ก ํํ์ | ๊ฒฐ๊ณผ |
|---|
/bookstore/book[1] | bookstore ์์ ์์ ์ค ์ฒซ ๋ฒ์งธ book ์์๋ฅผ ์ ํํฉ๋๋ค |
/bookstore/book[last()] | bookstore ์์ ์์ ์ค ๋ง์ง๋ง book ์์๋ฅผ ์ ํํฉ๋๋ค |
/bookstore/book[last()-1] | bookstore ์์ ์์ ์ค ๋์์ ๋ ๋ฒ์งธ book ์์๋ฅผ ์ ํํฉ๋๋ค |
/bookstore/book[position()<3] | bookstore ์์ ์์ ์ค ์ฒ์ ๋ ๊ฐ์ book ์์๋ฅผ ์ ํํฉ๋๋ค |
//title[@lang] | lang์ด๋ผ๋ ์ด๋ฆ์ ์์ฑ์ ๊ฐ์ง ๋ชจ๋ title ์์๋ฅผ ์ ํํฉ๋๋ค |
//title[@lang='eng'] | ๊ฐ์ด eng์ธ lang ์์ฑ์ ๊ฐ์ง ๋ชจ๋ title ์์๋ฅผ ์ ํํฉ๋๋ค |
/bookstore/book[price>35.00] | price ์์์ ๊ฐ์ด 35.00๋ณด๋ค ํฐ bookstore์ ๋ชจ๋ book ์์๋ฅผ ์ ํํฉ๋๋ค |
/bookstore/book[price>35.00]//title | price ์์๊ฐ 35.00๋ณด๋ค ํฐ bookstore ๋ด book ์์์ ๋ชจ๋ title ์์๋ฅผ ์ ํํฉ๋๋ค |
XPath๋ ์กฐ๊ฑด์์ 1๋ถํฐ ์์ํ๋ ์ธ๋ฑ์ฑ์ ์ฌ์ฉํ๋ฉฐ, ์ด๋ 0๋ถํฐ ์์ํ ๋ ์ธ๋ฑ์ฑ์ ์ฌ์ฉํ๋ JSONPath์ ๋ค๋ฆ
๋๋ค. ์ฒซ ๋ฒ์งธ ์์๋ [0]์ด ์๋๋ผ [1]์
๋๋ค.
์ ์ ์๋ ๋
ธ๋ ์ ํ#
XPath ์์ผ๋์นด๋๋ฅผ ์ฌ์ฉํ๋ฉด ์ ํํ ์ด๋ฆ์ ์์ง ๋ชปํด๋ ์ ์ ์๋ XML ์์๋ฅผ ์ ํํ ์ ์์ต๋๋ค.์์ผ๋์นด๋ ๊ตฌ๋ฌธ#
| ์์ผ๋์นด๋ | ์ค๋ช
|
|---|
* | ๋ชจ๋ ์์ ๋
ธ๋์ ์ผ์นํฉ๋๋ค |
@* | ๋ชจ๋ ์์ฑ ๋
ธ๋์ ์ผ์นํฉ๋๋ค |
node() | ๋ชจ๋ ์ ํ์ ๋
ธ๋์ ์ผ์นํฉ๋๋ค |
์์ผ๋์นด๋ ์์#
| ๊ฒฝ๋ก ํํ์ | ๊ฒฐ๊ณผ |
|---|
/bookstore/* | bookstore ์์์ ๋ชจ๋ ์์ ์์๋ฅผ ์ ํํฉ๋๋ค |
//* | ๋ฌธ์์ ๋ชจ๋ ์์๋ฅผ ์ ํํฉ๋๋ค |
//title[@*] | ์์ฑ์ด ์๋ ๋ชจ๋ title ์์๋ฅผ ์ ํํฉ๋๋ค |
์์ผ๋์นด๋๋ ๋์ XML ๊ตฌ์กฐ๋ฅผ ๋ค๋ฃจ๊ฑฐ๋ ์ด๋ฆ๊ณผ ๊ด๊ณ์์ด ๋ชจ๋ ์์๋ฅผ ์ ํํ๋ ค๋ ๊ฒฝ์ฐ์ ์ ์ฉํฉ๋๋ค.
์ฌ๋ฌ ๊ฒฝ๋ก ์ ํ#
๊ฒฝ๋ก ํํ์์์ | ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ์ฌ ์ฌ๋ฌ ๊ฒฝ๋ก๋ฅผ ์ ํํ ์ ์์ผ๋ฉฐ, ์ด๋ฅผ ํตํด ์ฌ๋ฌ ์ ํ ํญ๋ชฉ์ ๊ฒฐํฉํ ์ ์์ต๋๋ค.์ฌ๋ฌ ๊ฒฝ๋ก ์์#
| ๊ฒฝ๋ก ํํ์ | ๊ฒฐ๊ณผ |
|---|
//book/title | //book/price | book ์์์ ๋ชจ๋ title ๋ฐ price ์์๋ฅผ ์ ํํฉ๋๋ค |
//title | //price | ๋ฌธ์์ ๋ชจ๋ title ๋ฐ price ์์๋ฅผ ์ ํํฉ๋๋ค |
/bookstore/book/title | //price | bookstore ์์์ book ์์์ ์๋ ๋ชจ๋ title ์์์ ๋ฌธ์์ ๋ชจ๋ price ์์๋ฅผ ์ ํํฉ๋๋ค |
Apidog์์์ ์ฌ์ฉ ์ฌ๋ก#
XPath๋ Apidog์์ ํนํ ๋ค์๊ณผ ๊ฐ์ ์ฉ๋๋ก ์ ์ฉํฉ๋๋ค.XML ์๋ต ๊ฒ์ฆ: XML API ์๋ต์์ ํน์ ๊ฐ์ ์ถ์ถํ์ฌ ์ ํ์ฑ์ ํ์ธํฉ๋๋ค
SOAP API ํ
์คํธ: SOAP ์๋ต์ ๊ตฌ๋ฌธ ๋ถ์ํ๊ณ ๊ฒ์ฆํฉ๋๋ค
๋์ ๋ณ์: ์ถ ์ถํ XML ๊ฐ์ ํ์ ์์ฒญ์์ ์ฌ์ฉํ ์ ์๋๋ก ์ ์ฅํฉ๋๋ค
ํ
์คํธ ์ด์์
: XML ์๋ต ๋ฐ์ดํฐ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ด์์
์ ์์ฑํฉ๋๋ค
๋ฐ์ดํฐ ์ถ์ถ: ๋ณต์กํ ์ค์ฒฉ XML ๊ตฌ์กฐ์์ ํน์ ํ๋๋ฅผ ๊ฐ์ ธ์ต๋๋ค
์ต์ API์์๋ JSON์ด ๋ ์ผ๋ฐ์ ์ด์ง๋ง, ๋ง์ ๋ ๊ฑฐ์ ์์คํ
๊ณผ SOAP ๊ธฐ๋ฐ ์๋น์ค๋ ์ฌ์ ํ XML์ ์ฌ์ฉํฉ๋๋ค. XPath๋ ์ด๋ฌํ API๋ฅผ ํ
์คํธํ๋ ๋ฐ ํ์์ ์
๋๋ค.
์ฐธ๊ณ ์๋ฃ#