JSP JSTL <x:forEach>標籤:遍歷XML檔案

2020-07-16 10:04:59
<x:forEach> 標籤用於根據提供的 XPath 表示式遍歷 XML 檔案的內容。

語法:

<x:forEach[var="varName"]select="XPathExpression">
  [varStatus="varStatusName"]
  [begin="begin"][end="end"][step="step"]>
  body content
</x:forEach>


<x:forEach>標籤各屬性的詳細介紹如表所示。

<x:forEach> 標籤屬性
屬性 型別 描述 參照EL
select String XPath表示式,決定查詢結果 不可以
var String 迴圈體的變數 不可以
begin int 迴圈的起始位置,包括該位置 可以
end int 迴圈的終止位置,包括該位置 可以
step int 迴圈的步長 可以
varStatus String 迴圈的變數狀態 不可以

範例1

遍歷 XML 檔案 bookInfo.xml 的全部圖書資訊,關鍵程式碼如下:
<%@taglib prefix="x" uri="http://java.sun.com/jsp/jstl/xml"%>
  <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
    <c:import url="bookInfo.xml" var="xmlFile" charEncoding="gbk"/>
    <x:parse var="bookInfo" doc="${xmlFile}"></x:parse>
    <x:forEach select="$bookInfo/books/book">
      <p><x:out select="id/@value"/><br>
        <x:out select="name"/><br>
        <x:out select="publish/@value"/><br>
        <x:out select="sellAmount/@value"/></p>
    </x:forEach>

範例2

遍歷 XML 檔案 bookInfo.xml,並顯示第一本到第三本的圖書資訊,關鍵程式碼如下:
<%@taglib prefix="x" uri="http://java.sun.com/jsp/jstl/xml"%>
  <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
    <c:import url="bookInfo.xml" var="xmlFile" charEncoding="gbk"/>
    <x:parse var="bookInfo"doc="${xmlFile}"></x:parse>
    <x:forEach select="$bookInfo/books/book" begin="0" end="2">
      <p><x:out select="id/@value"/><br>
        <x:out select="name"/><br>
        <x:out select="publish/@value"/><br>
        <x:out select="sellAmount/@value"/></p>
    </x:forEach>

典型應用

使用 <x:forEach> 標籤遍歷 book.xml 檔案中的所有圖書資訊。關鍵程式碼如下:
<%@page pageEncoding="gbk" contentType="text/html;charset=GBK"%>
  <%@taglib prefix="x" uri="http://java.sun.com/jsp/jstl/xml"%>
    <%@taglib prefix="c" uri="/WEB-INF/c.tld"%>
      <c:import url="book.xml" var="xmlFile" charEncoding="gb2312"/>
      <x:parse var="tushu" doc="${xmlFile}"/>
      <x:forEach select="$tushu//book">
        <p><x:out select="id/@value"/><br>
          <x:out select="name/@value"/><br>
          <x:out select="publish/@value"/><br>
          <x:out select="price/@value"/></p>
      </x:forEach>
執行結果如下:
9787111379331
C語言開發寶典
機械工業出版社
79.00

9787111378471
Java開發寶典
機械工業出版社
99.00