³在开发中XML解析的操作是非常烦琐的,幸运的是在JSTL中专门提供了用于XML解析的操作,这样用户就可以不用费力的去研究SAX或DOM等操作的使用,就可以轻松的进行XML文件的解析处理。 
XML标签:

No.

功能分类

标签名称

描述

1

核心操作

<x:out>

输出XPath指定的内容

2

<x:parse>

进行XML解析

3

<x:set>

将内容保存在属性范围之中

4

流程控制

<x:if>

判断XPath指定的内容是否满足条件

5

<x:choose>

多条件判断,相当于switch语句

6

<x:when>

判断条件,相当于case语句

7

<x:otherwise>

条件出口,相当于default

8

<x:forEach>

循环输出节点

XPath简介 :

XPath的主要功能是在XML文档之中,能够准确地找到某一个节点元素,可以通过XPath找到一个XML文档中定义的节点内容或属性等。 
XPath路径标记 :

No.

路径标记

描述

1

根元素

/

2

父节点

../

3

任何路径下的节点

//

4

属性

@属性名称

5

通配符

*

定义一个xml文件 —— address.xml :

<?xml version="1.0" encoding="GBK"?>
<addresslist>
<linkman>
<name id="lxh">李兴华</name>
<email>mldnqa@163.com</email>
</linkman>
</addresslist>

No.

路径标记

描述

1

找到name元素

/addresslist/linkman/name

2

直接找到name元素

//name

3

找到id属性

//name/@id

<x:parse>标签 :主要做用是进行XML解析的操作

<x:parse [doc="XML文件内容"] [var="保存名称"] [scope="[page | request | session | application]"] [varDom="DOM解析后的XML对象"] [scopeDom="varDom范围"] [systemId="XML文件的URI"]/>
<x:parse [var="保存名称"] [scope="[page | request | session | application]"] [varDom="DOM解析后的XML对象"] [scopeDom="varDom范围"] [systemId="XML文件的URI"]>

要解析的XML文件

<x:parse/>

<x:parse >标签的属性 :

No.

属性名称

EL支持

描述

1

var

×

保存解析后的XML文件的对象

2

scope

×

var变量的保存范围,默认是page范围

3

varDom

×

使用DOM解析后的XML文件对象

4

scopeDom

×

varDom属性的保存范围

5

systemId

文件的URI

<x:out>标签 :用于输出XML文件的内容,输出时要通过XPath进行路径的指定,标签的语法如下所示:

<x:out select="XPath路径" [escapeXml="[true | false]"]/>

定义要解析的XML文件 :

<?xml version="1.0" encoding="GBK"?>
<addresslist>
<linkman>
<name id="lxh">李兴华</name>
<email>mldnqa@163.com</email>
</linkman>
</addresslist>

输出name和email元素的内容 —— xml_out.jsp :

<%@ page contentType="text/html" pageEncoding="GBK"%>
<%@ taglib uri="http://www.mldn.cn/jstl/core" prefix="c"%>
<%@ taglib uri="http://www.mldn.cn/jstl/x" prefix="x"%>
<html>
<head><title>www.mldnjava.cn,MLDN高端Java培训</title></head>
<body>
<c:import var="add" url="/ch13/address.xml" charEncoding="GBK"/>
<x:parse var="addressXml" doc="${add}"/>
<h3>姓名:<x:out select="$addressXml/addresslist/linkman/name"/>(编号:
<x:out select="$addressXml/addresslist/linkman/name/@id"/>
)</h3>
<h3>邮箱:<x:out select="$addressXml/addresslist/linkman/email"/></h3>
</body>
</html>

<x:set>标签 :可以将从XML文件取出的内容保存在指定的属性范围之中,标签语法如下所示:

<x:set select="XPath路径" var="属性保存名称" [scope="[page | request | session | application]"]/>
使用<x:set>标签保存解析的结果 —— xml_set.jsp :
<%@ page contentType="text/html" pageEncoding="GBK"%>
<%@ taglib uri="http://www.mldn.cn/jstl/core" prefix="c"%>
<%@ taglib uri="http://www.mldn.cn/jstl/x" prefix="x"%>
<html>
<head><title>www.mldnjava.cn,MLDN高端Java培训</title></head>
<body>
<c:import var="add" url="/ch13/address.xml" charEncoding="GBK"/>
<x:parse var="addressXml" doc="${add}"/>
<x:set var="nameXml" scope="page" select="$addressXml/addresslist/linkman"/>
<h3>姓名:<x:out select="$nameXml/name"/></h3>
</body>
</html>

<x:if>标签 :主要功能是用于判断XPath指定的内容是否符合判断的条件,此标签的语法如下所示:

<x:if select="XPath路径" var="存放判断结果" [scope="[page | request | session | application]"]/>
<x:if select="XPath路径" var="存放判断结果" [scope="[page | request | session | application]"]>

条件满足时的输出内容

</x:if>

使用<x:if>判断输出 —— xml_if.jsp :

<%@ page contentType="text/html" pageEncoding="GBK"%>
<%@ taglib uri="http://www.mldn.cn/jstl/core" prefix="c"%>
<%@ taglib uri="http://www.mldn.cn/jstl/x" prefix="x"%>
<html>
<head><title>www.mldnjava.cn,MLDN高端Java培训</title></head>
<body>
<c:import var="add" url="/ch13/address.xml" charEncoding="GBK"/>
<x:parse var="addressXml" doc="${add}"/>
<x:if select="$addressXml//name/@id='lxh'"> <!-- 判断id属性是否是lxh -->
<h3>存在编号是lxh信息,姓名:<x:out select="$addressXml/addresslist/linkman/name"/></h3>
</x:if>
</body>
</html>

<x:choose>、<x:when>、<x:otherwise>标签 :执行多条件判断

在一个<x:choose>标签中可以包含多个<x:when>以及一个<x:otherwise>标签,
<x:choose>的语法如下所示。
<x:choose>  编写<x:when>或<x:otherwise></x:choose>
<x:when>用于判断每一个条件,此标签的语法如下所示。
<x:when select="XPath路径">  标签体</x:when>
<x:otherwise>标签
<x:otherwise>  标签体</x:otherwise>
<%@ page contentType="text/html" pageEncoding="GBK"%>
<%@ taglib uri="http://www.mldn.cn/jstl/core" prefix="c"%>
<%@ taglib uri="http://www.mldn.cn/jstl/x" prefix="x"%>
<html>
<head><title>www.mldnjava.cn,MLDN高端Java培训</title></head>
<body>
<c:import var="add" url="/ch13/address.xml" charEncoding="GBK"/>
<x:parse var="addressXml" doc="${add}"/>
<x:choose>
<x:when select="$addressXml//name/@id='lxh'">
<h3>编号是lxh的名称:<x:out select="$addressXml/addresslist/linkman/name"/></h3>
</x:when>
<x:otherwise>
<h3>啥也不是了!</h3>
</x:otherwise>
</x:choose>
</body>
</html>

<x:forEach>标签 :与<c:forEach>类似,唯一不同的是<x:forEach>标签主要的功能是迭代xml文件,此标签语法如下所示:

<x:forEach select="XPath路径" [var="存储的变量名称"] [varStatus="存放变量信息"] [begin="开始的位置"] [end="结束的位置"] [step="步长"]>

标签体内容

</x:forEach>

<x:forEach>标签的属性 :

No.

属性名称

EL支持

描述

1

select

×

XPath路径

2

var

×

储存当前浏览的节点对象

3

varStatus

×

存放当前浏览的节点对象的相关信息

4

begin

浏览的开始位置

5

end

浏览的结束位置

6

step

每次的间隔步长

定义XML文件 —— alladdress.xml :

<?xml version="1.0" encoding="GBK"?>
<addresslist>
<linkman>
<name id="lxh">李兴华</name>
<email>mldnqa@163.com</email>
</linkman>
<linkman>
<name id="kf">客服中心</name>
<email>mldnkf@163.com</email>
</linkman>
<linkman>
<name id="hr">招聘中心</name>
<email>mldnhr@163.com</email>
</linkman>
</addresslist>

使用<x:forEach>输出全部<name>节点的内容:

<%@ page contentType="text/html" pageEncoding="GBK"%>
<%@ taglib uri="http://www.mldn.cn/jstl/core" prefix="c"%>
<%@ taglib uri="http://www.mldn.cn/jstl/x" prefix="x"%>
<html>
<head><title>www.mldnjava.cn,MLDN高端Java培训</title></head>
<body>
<c:import var="add" url="/ch13/alladdress.xml" charEncoding="GBK"/>
<x:parse var="addressXml" doc="${add}"/>
<x:forEach select="$addressXml//linkman" var="linkman">
<h3>姓名:<x:out select="name"/>
(编号:<x:out select="name/@id"/>)</h3>
</x:forEach>
</body>
</html>
总结:
使用XML标签库可以方便的进行XML解析功能;
在XML标签库之中提供了判断、循环等常见操作。

JSP标准标签库(JSTL)--XML标签库 x的更多相关文章

  1. 小峰servlet/jsp(7)jstl国际化标签库、sql标签库等

    一.jstl国际化标签库: fmt:setLocale 设定用户所在的区域: fmt:formatDate   对日期进行格式化 fmt:requestEncoding 设置所有的请求编码; fmt: ...

  2. JSTL XML标签库 使用

    推荐博客:http://blog.sina.com.cn/s/blog_4f925fc30101820u.html XML标签库 JSTL提供了操作xml文件的标签库,使用xml标签库可以省去使用Do ...

  3. 小峰servlet/jsp(6)jstl核心标签库

    一.引入jstl 需要jstl.jar;standard.jar; 二.jstl核心标签库: c:out         内容输出标签; c:set      用来设置4种属性范围值的标签: c:re ...

  4. [Java] JSP笔记 - EL、JSTL 常用标签

    一. 什么是 EL 语言 表达式语言(EL)是 JSP 2.0 引入的一种计算和输出 Java 对象的简单语言. 二.EL 语言的作用 为了使JSP写起来更加简单.表达式语言的灵感来自于 ECMASc ...

  5. JSP标准标签库(JSTL)--SQL标签库 sql

    了解即可.SQL标签库 No. 功能分类 标签名称 描述 1 数据源标签 <sql:setDataSource> 设置要使用的数据源名称 2 数据库操作标签 <sql:query&g ...

  6. JSP标准标签库(JSTL)--核心标签库 c

    核心标签库是JSTL中最重要的部分,可以完成输出,判断,迭代等操作 功能分类: 1. 基本标签: <c:out>:输出属性内容 <c:set>:设置属性内容 <c:rem ...

  7. JSP标准标签库(JSTL)--国际化标签库 fmt

    JSTL中使用fmt.tld作为格式化标签库的定义文件 No. 功能分类 标签名称 描述 1 国际化标签 <fmt:setLocale> 设置一个全局的地区代码 2 <fmt:req ...

  8. JSP标准标签库(JSTL)--函数标签库 fn

    和String的方法类似,就是对String的一种封装. No. 函数标签名称 描述 1 ${fn:contains()} 查询某字符串是否存在,区分大小写 2 ${fn:containsIgnore ...

  9. JSP 标准标签库(JSTL)

    JSP 标准标签库(JSTL) JSP标准标签库(JSTL)是一个JSP标签集合,它封装了JSP应用的通用核心功能. JSTL支持通用的.结构化的任务,比如迭代,条件判断,XML文档操作,国际化标签, ...

随机推荐

  1. iOS学习笔记(01) - 泛型

    决定新开一坑,在不断学习的同时分享自己的学习历程给大家,既是对自己学习的记录,又希望能对大家提供些微的帮助. 这一篇文章主要来介绍泛型的意义.使用与声明方法等. 1.泛型:限制类型 1.1.泛型使用场 ...

  2. UVALive - 4670 Dominating Patterns AC 自动机

    input n 1<=n<=150 word1 word2 ... wordn 1<=len(wirdi)<=70 s 1<=len(s)<=1000000 out ...

  3. ssl证书验证

    当我们在访问https网站时,浏览器就会自动下载该网站的SSL证书,并对证书的安全性进行检查. 其他概念不说了,有效期之类的验证也不说了.只说数字证书的真实性和可信性验证. 1.CA下发给网站的证书是 ...

  4. CSS3的box-sizing属性

    盒模型的宽度,在 IE5.x 以及 Quirks 模式的 IE6/7 中,将 border 与 padding 都包含在 width 之内 W3C标准中的盒模型宽度为内容宽度,不包括内边距paddin ...

  5. wordpress建站过程3——header.php

    header.php中包含了一个页面的页头,也就是其他页面中重复出现的部分,包括用户登陆/登陆后显示的文字,导航条,网页logo,有的还包括轮播图. 下面就简单的贴上一个文件吧. <!DOCTY ...

  6. Ubuntu上用mod_wsgi部署Django出现的一些问题

    1 编码问题 直接运行Django没问题,但通过Apache+mod_wsgi上传中文字符的文件时出错: UnicodeEncodeError: 'ascii' codec can't encode ...

  7. iosiOStextView实现文字高度自适应

    跟为textView设置提示性文字一样   需要在textView的代理方法中实现如下 如有偏差  请谅解 定义UITextView,实现UITextViewDelegate: -(UITextVie ...

  8. 手把手教你ranorex_android自动化测试第一个示例

    要说android的自动化,那真是折腾死我了,从早期的monkeyrunner,到后来的robotium,再到最新的uiautomator,各有各的问题,总之性价比都不够高,不太适合我的使用场景.于是 ...

  9. Educational Codeforces Round 15_D. Road to Post Office

    D. Road to Post Office time limit per test 1 second memory limit per test 256 megabytes input standa ...

  10. 使用queryperf对DNS服务器作压力测试

    一.querperf简介 当我们把DNS服务器配置好后,我们肯定会想测试一下DNS服务器的性能如何,上线后如果请求数够多服务器还能否响应?于是,我们可以使用软件模拟环境,对DNS服务器作评估性的测试. ...