JSP JSTL <x:out>標籤:輸出XML資訊

2020-07-16 10:04:58
<x:out> 標籤和 <c:out> 標籤類似,它們都是輸出標籤,<x:out> 標籤主要用於輸出 XML 資訊。

語法:

<x:out select="XPathExpression"[escapeXml="{true|false}"]/>
<x:out select="XPathExpression"[escapeXml="{true|false}"]>
</x:out>


說明:<x:set> 標籤有兩種語法格式,這兩種語法格式的輸出結果完全相同。

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

<x:out> 標籤屬性
屬性 型別 描述 參照 EL
select String XPath語句的表示式,用於查詢指定節點的屬性值 不可以
escapeXml boolean 指定是否要轉換特殊字元,這些特殊字元包括<、>、&、‘和"。預設為true 可以

XPath 表示式使用路徑表示法定址 XML 文件的各個部分,包括 XML 文件的根節點、父節點、子節點和兄弟節點等。常用的 XPath 表示式及對應的功能如表所示。

XPath 表示式及對應功能
表示式 功能 表示式 功能
/ 根節點 ../節點名稱 兄弟節點
./ 檔案節點 //節點名稱 所有同一節點
../ 父節點 @屬性名稱 屬性
節點名稱 子節點 * 全域性

說明:在XML檔案中,屬性值或元素內容中不能出現 <、>、&、'和"等字元,當這些內容中必須包括這些字元時,可以應用對應的實體程式碼表示。下表給出<、>、&、'和"等字元的實體程式碼。

特殊字元的實體程式碼
字元 實體程式碼 字元 實體程式碼
< &lt; > &gt;
& &amp; &#039;
" &#034;    

範例

首先通過 <c:import> 標籤匯入 bookInfo.xml 檔案,然後通過 <x:parse> 標籤解析 bookInfo.xml 檔案的內容,最後通過 <x:out> 標籤輸出 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:out select="$bookInfo/books/book/id/@value"/><br>
    書名:<x:out select="$bookInfo/books/book/name"escapeXml="true"/><br>
    出版社:<x:out select="$bookInfo/books/book/publish/@value"/>
bookInfo.xml檔案的內容如下:
<?xml version="1.0"encoding="gbk"?>
<books>
  <book>
    <id value="1"/>
    <name>&lt;&lt;Java開發寶典&gt;&gt;</name>
    <author value="C語言中文網"/>
    <publish value="機械工業出版社"/>
  </book>
</books>
執行本範例,執行結果如下:
編號:1
書名:《Java開發寶典》
出版社:機械工業出版社

如果將範例中的以下程式碼:
書名:<x:out select="$bookInfo/books/book/name"escapeXml="true"/>
修改為:
書名:<x:out select="$bookInfo/books/book/name"escapeXml="false"/>
執行結果如下:
編號:1
書名:<>
出版社:機械工業出版社

典型應用

下面以 book.xml 檔案內容為例,演示如何使用 <x:out> 標籤讀取 XML 資訊。
程式關鍵程式碼如下:

1)index.jsp 是首頁檔案,讀取 XML 檔案的節點屬性,應用 <x:out> 進行資料輸出。
<%@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}"/>
      <table width="300" border="1" cellpadding="0" cellspacing="0"
             bordercolor="white" bordercolordark="white" bordercolorlight="black">
        <tr>
          <td bgcolor="gray">ID:</td><td>
          <x:out select="$tushu/books/book/id/@value"/></td>
        </tr>
        <tr>
          <td bgcolor="gray">NAME:</td><td>
          <x:out select="$tushu/books/book/name/@value"/></td>
        </tr>
        <tr>
          <td bgcolor="gray">PUBLISH:</td>
          <td><x:out select="$tushu/books/book/publish/@value"/></td>
        </tr>
        <tr>
          <td bgcolor="gray">PRICE:</td>
          <td><x:out select="$tushu/books/book/price/@value"/></td>
        </tr>
      </table>
2)被讀取的 XML 檔案 book.xml 包含的圖書資訊有 id、name、publish 等子節點,每個節點都以 value 屬性定義屬性值。
<?xml version="1.0" encoding="gbk"?>
<books>
  <book>
    <id value="9787111378471"/>
    <name value="Java開發寶典"/>
    <publish value="機械工業出版社"/>
    <price value="99.00"/>
  </book>
</books>
執行結果如下:

ID: 9787111378471
NAME: Java開發寶典
PUBLISH: 機械工業出版社
PRICE: 99.00