.1 关于“/ ”和“// ”的使用
“/”是表示当前文档的节点,类似 DOS 目录分割符,“//”则表示当前文档所有的节点。类似查看
整个目录。
(1)/authors/author:表示选择根目录下、父节点为 authors 的元素“author”。

(2)/authors/author/name:表示查找到所有名称为“name”的元素,但是它的父节点为“author”,
而“author”的父节点又为“authors”。
(3)//name:表示查找 XML 文件中的所有“name”元素,而无论这个元素在什么层次。

.2 关于“* ”的使用
“*”标记表示某个层次上的所有元素。
(1)/authors/author/*:表示在 author 元素(它的父节点为 authors)下的所有子元素(本例为 name
和 nationality 两个元素)。
(2)/authors/*/name:表示查找所有名为 name 的元素,而不管它的父节点是谁,或者是 author,
也或者是 super-author 元素,但是再上一个父节点确必须是 authors 元素。
(3)//*:表示查找到所有元素。

3 路径分支
方括号表示路径分支。
(1)/authors/author[nationality]/name:表示只查找那些在 authors 元素下包含 nationality 子元素的
author 元素的 name 节点。
(2)authors/author[nationality=’Russian’]/name:表示查找那些nationality子元素值为German的author
元素下的 name 节点,而且 author 元素的父节点为 authors。

XML核心动作标签
包括的核心动作标签有如下几个:
<x.parse>:用于解析 XML 文件。
<x.out>:通过 XPath 来读取 XML 文件中的某元素。
<x:set>:该标签用来计算 XPath 表达式,并且把结果保存在指定的变量当中。

<x:parse> 标签
该标签的使用格式如下:
<x:parse doc=”XMLDocument”
[var=”varName”] [scope=”scope”] | [varDom=”varName”] [scopeDom=”scope”]
[systemId=”systemId”] [filter=”filter”] />
标签中的各属性描述如下:
doc:指定要解析的 XML 文件。一般使用<c:import>检索到相应的 XML 文件。
var:把解析之后的 XML 文件存储在 var 属性指定的变量中。
scope:设置 var 属性指定的变量有效范围。
varDom:存储解析后的 XML 文件。
scopeDom:设置 varDom 属性指定变量的有效范围。
systemId:指定 XML 文件的 URI。
filter:对应的是 org.xml.sax.XMLFilter 类。

例子:

<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/xml" prefix="x" %> <html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Insert title here</title>
</head>
<body> <h4>解析xml</h4>
<c:set var="xmlText">
<a>
<b>
<c>good</c>
</b>
<d>
<c>body</c>
</d>
</a>
</c:set>
<hr>
<x:parse var="xmlDoc" doc="${xmlText}" />
<x:out select="$xmlDoc//c"/><br>
<x:out select="$xmlDoc/a/d"/><br>
<x:out select="$xmlDoc/a/*"/><br> </body>
</html>

  

<x:out> 标签
该标签是用于计算 XPath 表达式,然后把查找到的元素进行输出。
其一般的使用格式如下:
<x:out select=”XPathExpression” [escapeXml=”true|false”] />
属性说明如下:
select:将要计算的 XPath 表达式。
escapeXml:确定<、>、&、’、”这些字符是否被转换成字符实体代码,默认为 true。

<?xml version="1.0" encoding="UTF-8"?>
<games>
<country id="Luxembourg">
<athlete>
<name>Lux 1</name>
<sport>swimming</sport>
<age>23</age>
<gender>M</gender>
</athlete>
<athlete>
<name>Lux 2</name>
<sport>wrestling</sport>
<age>31</age>
<gender>M</gender>
</athlete>
</country>
<country id="Denmark">
<athlete>
<name>Den 1</name>
<sport>cycling</sport>
<age>18</age>
<gender>F</gender>
</athlete>
<athlete>
<name>Den 2</name>
<sport>sailing</sport>
<age>27</age>
<gender>M</gender>
</athlete>
</country>
</games>

  

<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/xml" prefix="x" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>games</title>
</head>
<body>
<h4>parse和out输出</h4>
<!-- 引入文件 -->
<c:import var="doString" url="games.xml"/>
<!-- 开始解析xml -->
<x:parse var="doc" doc="${doString}"/>
<table border="1">
<tr>
<td valign="top"><pre><c:out value="${doString}"/></pre></td>
<td valign="top">
<!-- 内嵌table -->
<table border="1">
<tr>
<td>XPath元素</td>
<td>查找到的元素</td>
</tr>
<tr>
<td>$doc//sport[只取第一个]</td>
<td><x:out select="$doc//sport"/></td>
</tr>
<tr>
<td>$doc/games/country/*</td>
<td><x:out select="$doc/games/country/*"/></td>
</tr>
<tr>
<td>$doc//*</td>
<td><x:out select="$doc//*"/></td>
</tr>
<tr>
<td>$doc/games/country</td>
<td><x:out select="$doc/games/country"/></td>
</tr>
<tr>
<td>$doc/games/country/[Last()][取最后一个元素]</td>
<td><x:out select="$doc/games/country[last()]"/></td>
</tr>
<tr>
<td>$doc//@id[取第一个id]</td>
<td><pre><x:out select="$doc//@id"/></pre></td>
</tr>
<tr>
<td>$doc//country/[@id="Denmark""]</td>
<td><pre><x:out select="$doc//country[@id='Denmark']"/></pre></td>
</tr>
</table>
<!-- 内嵌table -->
</td>
</tr>
</table>
</body>
</html>

  

<x:set> 标签
该标签首先计算 XPath 表达式,然后把计算的结果保存在指定的变量中,而不是输出。
<x:set>标签的一般使用格式如下:
<x:set select=”XPathExpression”
var=”varName” [scope=”page|request|session|application”] />
标签中各属性描述如下:
select:将要被计算的 XPath 表达式。
var:把 XPath 表达式计算之后的值保存在这个属性所指定的变量中,以后可以通过指定的变量
来引用这个值。
scope:设置 var 属性所指定变量的有效范围。

<c:set var="xmlText">
<a>
<d>
<c>baby</c>
<k>good</k>
</d>
</a>
</c:set> <x:set var="doc" select="$xmlText//a"/>
<x:out select="$doc"/>

  

jsp:xpath - xml的更多相关文章

  1. JSP处理XML数据

    以下内容引用自http://wiki.jikexueyuan.com/project/jsp/xml-data.html: 当通过HTTP发送XML数据时,使用JSP处理传入和传出的XML文件是有意义 ...

  2. html、css、javascript、JSP 、xml学习顺序应该是怎样的呢?

    html==>css==>javascript==>jsp==>xml 1.先学习基本的HTML知识,了解大部分HTML标签的作用. 2.学习CSS,熟悉如何用CSS去控制HT ...

  3. JSP web.xml <jsp-config>标签使用详解

    <jsp-config> 包括 <taglib> 和 <jsp-property-group> 两个子元素.其中<taglib> 元素在JSP 1.2  ...

  4. jsp操作xml

    <?xml version="1.0" encoding="UTF-8"?> <!-- 说明是xml文件,文件的版本和字符编码 --> ...

  5. JSP XML 数据处理

    JSP XML 数据处理 当通过HTTP发送XML数据时,就有必要使用JSP来处理传入和流出的XML文档了,比如RSS文档.作为一个XML文档,它仅仅只是一堆文本而已,使用JSP创建XML文档并不比创 ...

  6. JSP-Runoob:JSP XML 处理数据

    ylbtech-JSP-Runoob:JSP XML 处理数据 1.返回顶部 1. JSP XML 数据处理 当通过HTTP发送XML数据时,就有必要使用JSP来处理传入和流出的XML文档了,比如RS ...

  7. http://java.sun.com/jsp/jstl/core cannot be resolved in either web.xml or the jar files deployed wit

    异常:The absolute uri: http://java.sun.com/jsp/jstl/core cannot be resolved in either web.xml or the j ...

  8. HTML/XML/XPATH基础

    Html超文本标记语言 网页上单击右键→查看源文件/查看源代码 Html基本结构 <html>               为文档根元素,所有元素都在内部进行 <head>   ...

  9. XML之XPath

    1.在 XPath 中,有七种类型的节点:元素.属性.文本.命名空间.处理指令.注释以及文档节点(或称为根节点). 1.1 XPath 术语 节点(Node) 在 XPath 中,有七种类型的节点:元 ...

随机推荐

  1. Java栈(Stack)和堆(Heap)

    In the following code public void Method1() { int i = 4; int y = 2; class1 cls1 = new class1(); } He ...

  2. Django--Web应用介绍/http协议

  3. MSSQL获取昨天,本周,本月。。。

    特别说明下:以下统计本周数据时,星期天是作为下周的第一天,而不是本周最后一天,因此你把星期天作为本周最后一天时,你需要在getDate()的基础上减一天,如dateadd('day', -1, get ...

  4. 在SQLPLUS里显示IP、用户名和实例名

    在SQLPLUS里显示IP.用户名和实例名 方法一: 编辑$ORACLE_HOME/sqlplus/admin/glogin.sql文件在末尾加入下面的内容即可 define  gname = 'SQ ...

  5. linux进程内存到底怎么看 剖析top命令显示的VIRT RES SHR值

    引 言: top命令作为Linux下最常用的性能分析工具之一,可以监控.收集进程的CPU.IO.内存使用情况.比如我们可以通过top命令获得一个进程使用了多少虚拟内存(VIRT).物理内存(RES). ...

  6. Python(名称空间、函数嵌套、函数对象)

    一.名称空间: 名称空间 定义:存放名字和值的绑定关系       内置名称空间 python自带的名字,如print.int.str 解释器启动就会生效   全局名称空间 文件级别定义的名字,都会放 ...

  7. cdoj1337郭大侠与阴阳家

    地址:http://acm.uestc.edu.cn/#/problem/show/1337 思路: 郭大侠与阴阳家 Time Limit: 3000/4000MS (Java/Others)     ...

  8. POJ 2516 Minimum Cost (KM最优匹配)

    题意:有N家家店,每家店都对K种货物有需求:同时有M家仓库,对K钟货物有供应.对于每种货物,每个仓库送至每家店都有自己的单位费用.求满足所有店所有货物的最小费用 分析:对于每一种货物,如果总需求大于总 ...

  9. mapreduce编程--(准备篇)

    mapreduce编程准备 学习mapreduce编程之前需要做一些概念性的了解,这是做的一些课程学习笔记,以便以后时不时的翻出来学习下,之前看过一篇文章大神们都是时不时的翻出基础知识复习下,我也做点 ...

  10. JAVA接口中不可以有静态方法吗

    1. 接口中每一个方法也是隐式抽象的,接口中的方法会被隐式的指定为 public abstract(只能是 public abstract,其他修饰符都会报错),所以不能含有静态代码块以及静态方法(用 ...