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

JSP에서 XML 노드 반복 처리하기 – x:forEach 태그 완벽 가이드


JSP의 JSTL XML 라이브러리에서 제공하는 <x:forEach> 태그는 XML 문서 내의 노드들을 순회(iteration)하며 반복 처리할 때 사용됩니다. XPath 표현식으로 특정 노드 집합을 선택한 후, 각 노드에 대해 지정된 본문(body) 내용을 반복 실행합니다.

x:forEach 태그의 주요 속성

<x:forEach> 태그는 다음과 같은 속성을 지원합니다.

속성설명필수 여부기본값
select평가(evaluate)할 XPath 표현식을 지정합니다.없음
var반복 시마다 현재 항목(current item)을 저장할 변수의 이름입니다.아니오없음
begin반복을 시작할 시작 인덱스입니다.아니오없음
end반복을 종료할 종료 인덱스입니다.아니오없음
step컬렉션을 순회할 때 인덱스가 증가하는 크기(간격)입니다.아니오없음
varStatus반복 상태 정보를 저장할 변수의 이름입니다.아니오없음

사용 예제

다음 예제는 <x:forEach> 태그를 활용하여 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 x:forEach 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"/>
      <ul class = "list">
         <x:forEach select = "$output/books/book/name" var = "item">
            <li>Book Name: <x:out select = "$item" /></li>
         </x:forEach>
      </ul>
   </body>
</html>

위 코드의 동작 흐름을 살펴보면 다음과 같습니다.

  • <c:set> 태그로 XML 문자열을 변수 xmltext에 저장합니다.
  • <x:parse> 태그로 해당 XML 문자열을 파싱하여 output 변수에 담습니다.
  • <x:forEach> 태그의 select 속성에 XPath 표현식인 $output/books/book/name을 지정하여 모든 책 이름 노드를 순회합니다.
  • 각 반복마다 현재 노드가 item 변수에 저장되고, <x:out> 태그로 그 값을 출력합니다.

이 코드를 실행하면 다음과 같은 결과를 얻을 수 있습니다.

Books Info:
Book Name: Padam History
Book Name: Great Mistry