<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檔案中,屬性值或元素內容中不能出現 <、>、&、'和"等字元,當這些內容中必須包括這些字元時,可以應用對應的實體程式碼表示。下表給出<、>、&、'和"等字元的實體程式碼。
特殊字元的實體程式碼
字元 |
實體程式碼 |
字元 |
實體程式碼 |
< |
<; |
> |
>; |
& |
&; |
’ |
'; |
" |
" |
|
|
範例
首先通過 <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 |