본문 바로가기

XPath 테스터

브라우저 처리

XML 문서에 XPath 식을 실행해 일치하는 요소·속성·텍스트를 개수와 함께 보여 줍니다. count() 같은 숫자 결과와 기본 네임스페이스 안내도 지원합니다.

사용 전 확인
  • 파일·이미지·문서 처리 도구는 브라우저 안에서 처리되더라도 원본에 개인정보나 민감 정보가 포함될 수 있습니다. 공유·제출 전 원본과 결과를 한 번 더 확인하세요.
도구 실행입력 후 결과 확인
XPath 테스터 샘플 실행

크롤러, XSLT, 테스트 코드에 넣을 XPath 식이 원하는 노드를 정확히 고르는지 확인하려면 실제 문서에 실행해 보는 것이 가장 빠릅니다. 이 테스터는 XML 문서와 XPath 식을 넣으면 일치하는 결과를 한 줄씩 보여 줍니다.

브라우저 처리
샘플 결과
Markdown

일치 1개
자바스크립트가 활성화되면 이 영역이 실제 입력, 실행, 결과 패널로 바뀝니다.

XPath 테스터 사용 가이드

크롤러, XSLT, 테스트 코드에 넣을 XPath 식이 원하는 노드를 정확히 고르는지 확인하려면 실제 문서에 실행해 보는 것이 가장 빠릅니다. 이 테스터는 XML 문서와 XPath 식을 넣으면 일치하는 결과를 한 줄씩 보여 줍니다.

요소는 태그째로, 속성(@id)과 텍스트(text())는 값만 보여 주고, 맨 아래에 '일치 2개'처럼 개수를 붙입니다. count(//tool), string(//title), boolean(//x) 같은 식은 숫자·글자·참거짓 값 하나로 결과가 나옵니다.

문서에 xmlns="…" 기본 네임스페이스가 있으면 //entry 같은 식이 아무것도 고르지 못하는데, 이 경우 //*[local-name()='entry']처럼 쓰라는 안내를 함께 보여 줍니다.

사용 방법

  1. 'XML 문서' 칸에 검색할 XML을 붙여 넣습니다.
  2. 'XPath 식' 칸에 //tool[@id='2']/name 같은 식을 적습니다.
  3. '실행'을 누르면 일치한 결과와 개수가 나오고, 식이 틀리면 오류 위치가 표시됩니다.

예시: id가 2인 도구의 이름

입력
XML 문서:
<catalog><tool id="1"><name>ToolBada</name></tool><tool id="2"><name>Markdown</name></tool></catalog>

XPath 식:
//tool[@id='2']/name/text()
결과
Markdown

일치 1개

text()를 빼면 <name>Markdown</name>처럼 요소째 나오고, count(//tool)은 2를 돌려줍니다.

이럴 때 쓰면 좋아요

  • 크롤러에 넣을 XPath가 원하는 요소를 고르는지 확인할 때
  • XSLT의 select 식을 미리 시험할 때
  • sitemap.xml에서 특정 URL이나 개수를 뽑을 때
  • 테스트 코드의 XML 검증 식을 디버깅할 때

문제가 생겼을 때

분명히 있는데 '일치하는 노드가 없습니다'

문서에 기본 네임스페이스(xmlns)가 있으면 접두어 없는 이름이 맞지 않습니다. //*[local-name()='title']처럼 local-name()으로 고르세요.

'XPath 식이 올바르지 않습니다' 오류

괄호·대괄호 짝이나 따옴표가 빠진 경우가 많습니다. 조건 안의 글자는 [@id='2']처럼 작은따옴표로 감싸세요.

활용 팁

  • 결과가 너무 많으면 (//item)[1]처럼 괄호로 묶어 첫 번째만 고르거나, [position() <= 5]로 앞의 다섯 개만 보세요.
  • 속성 값만 필요하면 //tool/@id처럼 끝에 @속성을 붙이면 값만 깔끔하게 나옵니다.

자주 묻는 질문

XPath 2.0이나 3.0 함수도 되나요?

아니요. 브라우저가 지원하는 XPath 1.0만 실행합니다. matches(), lower-case() 같은 2.0 함수는 오류가 납니다.

HTML에도 쓸 수 있나요?

XML 규칙에 맞는 XHTML만 읽습니다. 닫는 태그가 빠진 일반 HTML은 XML 형식 오류가 납니다.

결과에 줄 번호도 나오나요?

아니요. 일치한 노드의 내용과 개수만 보여 줍니다. 위치는 XML 포맷터·검사기로 정리한 뒤 찾아보세요.