XPath 테스터
XML 또는 HTML 문서
최대 1,000,000자의 XML 또는 HTML을 붙여넣으세요. 평가는 이 브라우저에서 XPath 1.0으로 실행됩니다.
절대 또는 상대 XPath 1.0 표현식을 입력하세요. 문서에 선언된 접두사는 자동으로 등록되며, 기본 네임스페이스는 접두사 d로 사용할 수 있습니다.
스크레이핑이나 XSLT용 XPath 작성은 바로 실행해 볼 샌드박스가 없으면 찍고 확인하기의 반복이 됩니다. 이 테스터는 한쪽 창에 XML 또는 HTML을, 다른 창에 표현식을 받아 브라우저 자체 엔진으로 XPath 1.0을 평가하고, 일치한 모든 노드를 종류, 속성, 텍스트 내용, 직렬화된 마크업과 함께 나열합니다. count(//book) 같은 스칼라 표현식은 값을 바로 반환하고, 문서에 선언된 네임스페이스 접두사는 자동으로 등록됩니다. 모든 처리는 브라우저에서 실행되며 문서는 절대 업로드되지 않습니다.
XPath 표현식 테스트 방법
-
1
XML 또는 HTML 붙여넣기
자동 감지가 HTML doctype이나 루트를 발견하면 관대한 HTML 파싱으로 전환합니다. XML 또는 HTML 모드를 직접 지정할 수도 있습니다.
-
2
XPath 입력
절대 경로(`/library/book`)든 상대 경로(`//div[@class='card']`)든 어떤 XPath 1.0 표현식이든 사용할 수 있습니다.
-
3
평가
브라우저의 XPath 엔진이 쿼리를 로컬에서 실행합니다. 서버로는 아무것도 전송되지 않습니다.
-
4
결과 확인
각 일치 항목은 노드 종류, 속성, 정리된 텍스트, 직렬화된 마크업을 보여 주며 최대 200개까지 나열됩니다.
XPath 1.0 핵심 표현식
| 표현식 | 일치 대상 |
|---|---|
/books/book |
루트 <books>의 자식 <book> |
//book |
문서 어디에 있든 모든 <book> |
//book[@id='42'] |
id 속성이 42인 <book> |
//book[1] |
각 부모의 첫 번째 <book>(문서 전체 아님) |
(//book)[1] |
문서 전체에서 첫 번째 <book> |
//book[title='1984'] |
<title> 텍스트가 “1984”인 <book> |
//book/@id |
모든 <book> 요소의 id 속성 |
//book[position() > 1] |
첫 번째를 제외한 모든 <book> |
//book[last()] |
부모별 마지막 <book> |
스칼라 표현식도 동작합니다. count(//book)은 숫자를, string(//title)은 문자열을, boolean(//book[@id])은 true 또는 false를 반환합니다. 테스터는 이런 값을 노드 목록 대신 바로 보여 줍니다.
child 외에 자주 쓰는 축
ancestor::, 모든 조상 노드following-sibling::, 현재 노드 뒤의 형제 노드preceding-sibling::, 앞의 형제 노드descendant::, 모든 자손 노드attribute::(축약형@), 현재 노드의 속성parent::(축약형..), 부모 요소
HTML에서 주의할 점
HTML은 엄격한 XML이 아니므로, 테스터는 엄격한 XML 파서 대신 브라우저의 HTML 파서로 관대하게 파싱합니다. HTML 모드는 <!DOCTYPE html>이나 <html> 루트로 자동 감지되며, 선택기로 원하는 모드를 강제할 수도 있습니다. HTML 모드에서는 태그와 속성 이름이 소문자로 바뀌므로 XPath도 소문자로 작성하세요. //DIV[@CLASS]가 아니라 //div[@class]입니다.
네임스페이스
네임스페이스가 있는 XML은 접두사 등록이 필요합니다.
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/">
<item>
<content:encoded>...</content:encoded>
</item>
</rss>
테스터는 문서에서 xmlns 선언을 찾아 모든 접두사를 자동으로 등록하므로 //content:encoded가 그대로 동작합니다. 기본 네임스페이스(접두사 없는 xmlns="...")는 문서 안에 접두사가 없으므로 테스터가 접두사 d에 바인딩합니다. 기본 네임스페이스 피드 안의 <item>은 //d:item으로 선택하세요. 등록된 바인딩은 결과 옆에 표시됩니다.
이 테스터가 평가하지 않는 것
브라우저는 대부분의 스크레이핑 스택이 사용하는 것과 같은 방언인 XPath 1.0을 평가합니다. matches(string, regex), tokenize(string, delimiter), for ... return 표현식, 시퀀스 연산자 같은 XPath 2.0 이후의 기능은 여기에 포함되지 않으며, XSLT 2.0/3.0 도구 체인에서 볼 수 있습니다. 웹 스크레이핑에서는 XPath 1.0이 여전히 가장 이식성 높은 선택입니다.
테스트 팁
- 넓게 시작해 좁혀 가세요. 먼저
//div, 다음//div[@class], 마지막으로 구체적인 class 값 순서로 좁힙니다. - 네임스페이스 선언을 확인하세요. “왜 내 XPath는 아무것도 반환하지 않지?” 하는 버그는 대부분 네임스페이스 문제입니다. 등록된 접두사 목록을 살펴보세요.
- 대소문자에 주의하세요. XML은 대소문자를 구분합니다. HTML 모드는 이름을 소문자로 바꿉니다.
- 텍스트를 추출할 때는 string()도 시험해 보세요. 중첩 마크업이 있으면
//p/text()와string(//p)의 결과가 다릅니다.
자주 묻는 질문
아니요, XPath만 지원합니다. 대부분의 브라우저는 document.querySelectorAll(CSS)과 document.evaluate(XPath)로 둘 다 지원하므로, 작업에 더 명확한 쪽을 사용하세요.
HTML 파싱은 태그와 속성 이름을 소문자로 바꿉니다. XPath를 소문자로 작성했는지 확인하세요. //DIV[@CLASS]가 아니라 //div[@class]입니다. 모드도 확인하세요. 엉성한 HTML에 XML 모드를 강제하면 파싱 오류로 실패하지만, HTML 모드는 관대하게 파싱합니다.
문서에 선언된 접두사는 표현식에서 쓸 수 있도록 자동으로 등록됩니다. 기본 네임스페이스는 접두사 d에 바인딩되므로, 기본 네임스페이스 문서의 <item> 요소는 //d:item으로 선택합니다. 활성 바인딩은 결과와 함께 표시됩니다.
아니요. 문서와 표현식은 브라우저 자체 XPath 엔진이 평가하며, 저희 서버로 전송되거나 저장되지 않고 페이지 주소에 추가되지도 않습니다. 여러 단계 화면이 결과를 보여줄 수 있도록 이 브라우저 세션 안에만 남습니다.
관련 도구
ASCII 표 참조
NUL, LF, DEL 같은 제어 문자를 포함해 모든 문자에 대한 10진수, 16진수, 8진수, 2진수, HTML 숫자 문자 참조를 담은 0부터 127까지의 전체 ASCII 표.
랜덤 영어 글자 생성기
A-Z 영어 글자를 무작위로 생성합니다. 개수와 대문자, 소문자, 혼합 대소문자를 선택해 게임, 과제, 수업 활동에 활용하세요.
랜덤 색상 팔레트 생성기
2~15개의 색상으로 랜덤 팔레트를 만들고, 비비드, 파스텔, muted, dark 스타일을 선택한 뒤 HEX 코드나 CSS 변수를 복사하세요.
2진수 8진수 변환기
비트를 세 개씩 묶어 2진수를 8진수로 변환합니다. Unix 권한, 레거시 시스템, 간결한 숫자 표시에 유용합니다.
Base64 → Hex 변환기
표준 Base64 문자열을 대문자 16진수로 연속 표기한 바이트로 변환합니다. 엄격한 디코딩 방식으로 토큰, 키, JWT 서명 확인에 적합합니다.
불 대수 간소화 도구
모든 입력 조합에 대해 불리언 식을 평가하고 완전한 진리표를 보여줍니다. 변수는 최대 5개, 연산자는 &, |, !, ^를 지원합니다.