<x:out> 标签和 <c:out> 标签类似,它们都是输出标签,<x:out> 标签主要用于输出 XML 信息。
语法:
说明:<x:set> 标签有两种语法格式,这两种语法格式的输出结果完全相同。
<x:out> 标签各属性的详细介绍如表所示。
属性 | 类型 | 描述 | 引用 EL |
---|---|---|---|
select | String | XPath语句的表达式,用于查询指定节点的属性值 | 不可以 |
escapeXml | boolean | 指定是否要转换特殊字符,这些特殊字符包括<、>、&、‘和"。默认为true | 可以 |
XPath 表达式使用路径表示法寻址 XML 文档的各个部分,包括 XML 文档的根节点、父节点、子节点和兄弟节点等。常用的 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="城东书院"/>
<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 |