JSP에서 XML 데이터를 처리할 때는 <x:parse> 태그를 사용하면 간편하게 구문 분석(파싱)을 수행할 수 있습니다. 이 태그는 속성(attribute)으로 지정한 XML 데이터 또는 태그 본문(body)에 포함된 XML 데이터를 파싱하는 역할을 합니다.
x:parse 태그의 주요 속성
<x:parse> 태그에서 사용할 수 있는 속성은 다음과 같습니다.
| 속성 | 설명 | 필수 여부 | 기본값 |
|---|---|---|---|
| var | 파싱된 XML 데이터를 저장할 변수 | 아니오 | 없음 |
| xml | 파싱할 문서의 텍스트 (String 또는 Reader) | 아니오 | Body(본문) |
| systemId | 문서를 파싱할 때 사용되는 시스템 식별자 URI | 아니오 | 없음 |
| filter | 원본 문서에 적용할 필터 | 아니오 | 없음 |
| doc | 파싱할 XML 문서 | 아니오 | Page |
| scope | var 속성에 지정된 변수의 유효 범위(scope) | 아니오 | Page |
| varDom | 파싱된 XML 데이터(DOM)를 저장할 변수 | 아니오 | Page |
| scopeDom | varDom 속성에 지정된 변수의 유효 범위(scope) | 아니오 | Page |
실전 예제
앞서 문서 본문에 포함된 XML을 파싱하는 방법을 살펴보았습니다. 이번에는 외부 XML 파일을 읽어와 파싱하는 방법을 알아보겠습니다.
먼저 아래 내용을 books.xml 파일로 저장합니다.
<books>
<book>
<name>Padam History</name>
<author>ZARA</author>
<price>100</price>
</book>
<book>
<name>Great Mistry</name>
<author>NUHA</author>
<price>2000</price>
</book>
</books>
다음으로, 같은 디렉터리에 아래와 같이 main.jsp 파일을 작성합니다.
<%@ taglib prefix = "c" uri = "https://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix = "x" uri = "https://java.sun.com/jsp/jstl/xml" %>
<html>
<head>
<title>JSTL x:parse Tags</title>
</head>
<body>
<h3>Books Info:</h3>
<c:import var = "bookInfo" url = "https://localhost:8080/books.xml"/>
<x:parse xml = "${bookInfo}" var = "output"/>
<b>첫 번째 책의 제목</b>:
<x:out select = "$output/books/book[1]/name" />
<br>
<b>두 번째 책의 가격</b>:
<x:out select = "$output/books/book[2]/price" />
</body>
</html>
브라우저에서 https://localhost:8080/main.jsp 주소로 위 JSP 페이지에 접속하면 다음과 같은 결과가 출력됩니다.
Books Info:
The title of the first book is:Padam History
The price of the second book: 2000
이 예제에서 핵심 흐름은 다음과 같습니다. 먼저 <c:import> 태그로 외부 XML 파일의 내용을 가져온 뒤, <x:parse> 태그로 해당 데이터를 파싱하여 output 변수에 저장하고, 마지막으로 <x:out> 태그에 XPath 표현식을 사용해 원하는 데이터를 추출하여 화면에 출력합니다. 이처럼 JSTL의 XML 태그 라이브러리를 활용하면 별도의 자바 코드 없이도 JSP 페이지에서 XML 데이터를 손쉽게 다룰 수 있습니다.