语法:
<x:out select="XPathExpression"[escapeXml="{true|false}"]/>
<x:out select="XPathExpression"[escapeXml="{true|false}"]>
</x:out>
说明:<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="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 |
原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/22859.html