首页 > 编程笔记 > Java笔记 阅读:39

JSP JSTL <x:out>标签:输出XML信息

<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

编程帮,一个分享编程知识的公众号。跟着站长一起学习,每天都有进步。

通俗易懂,深入浅出,一篇文章只讲一个知识点。

文章不深奥,不需要钻研,在公交、在地铁、在厕所都可以阅读,随时随地涨姿势。

文章不涉及代码,不烧脑细胞,人人都可以学习。

当你决定关注「编程帮」,你已然超越了90%的程序员!

编程帮二维码
微信扫描二维码关注

所有教程

优秀文章