Computer >> 컴퓨터 >  >> 프로그래밍 >> 프로그래밍

JSTL 태그로 XPath 표현식 결과를 변수에 저장하는 방법

JSP에서 XML 데이터를 다룰 때 XPath 표현식의 결과 값을 변수에 담아두면 재사용성이 크게 향상됩니다. 이때 유용하게 쓰이는 것이 바로 JSTL XML 태그 라이브러리의 <x:set> 태그입니다.

<x:set> 태그는 XPath 표현식을 평가한 결과를 지정한 변수에 저장하는 역할을 합니다. 흥미로운 점은 결과 값의 데이터 타입에 따라 자동으로 적절한 Java 객체가 생성된다는 것입니다.

  • 결과가 불리언(boolean)인 경우 → java.lang.Boolean 객체
  • 결과가 문자열(string)인 경우 → java.lang.String 객체
  • 결과가 숫자(number)인 경우 → java.lang.Number 객체

<x:set> 태그의 주요 속성

<x:set> 태그는 아래와 같은 속성들을 제공합니다.

속성설명필수 여부기본값
varXPath 표현식의 결과 값을 저장할 변수필수Body
select평가할 XPath 표현식선택None
scopevar 속성에 지정한 변수의 유효 범위(scope)선택Page

사용 예제

다음 예제는 <x:set> 태그를 활용해 XML 문서에서 특정 노드 집합을 추출하여 변수에 저장하고, 그 결과를 화면에 출력하는 방법을 보여줍니다.

<%@ 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 Tags</title>
   </head>
   <body>
      <h3>Books Info:</h3>
      <c:set var = "xmltext">
         <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>
      </c:set>
      <x:parse xml = "${xmltext}" var = "output"/>
      <x:set var = "fragment" select = "$output//book"/>
      <b>The price of the second book</b>:
      <c:out value = "${fragment}" />
   </body>
</html>

코드를 살펴보면 먼저 <c:set> 태그로 XML 문자열을 xmltext 변수에 담고, <x:parse> 태그로 이를 파싱하여 output 변수에 저장합니다. 그다음 <x:set> 태그의 select 속성에 XPath 표현식 $output//book을 지정해 모든 book 노드를 fragment 변수에 할당합니다.

위 JSP 페이지를 실행하면 다음과 같은 결과가 출력됩니다.

Books Info:
The price of the second book:[[book: null], [book: null]]

정리

<x:set> 태그는 XPath 표현식의 평가 결과를 변수에 저장함으로써, 동일한 표현식을 반복해서 작성할 필요 없이 여러 위치에서 재사용할 수 있게 해줍니다. 특히 XML 문서에서 특정 노드나 값을 반복적으로 참조해야 하는 경우 코드의 가독성과 유지보수성을 크게 높여주므로, JSTL XML 처리 시 적극적으로 활용해 볼 만합니다.