jsp:xpath - xml
.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的更多相关文章
- JSP处理XML数据
以下内容引用自http://wiki.jikexueyuan.com/project/jsp/xml-data.html: 当通过HTTP发送XML数据时,使用JSP处理传入和传出的XML文件是有意义 ...
- html、css、javascript、JSP 、xml学习顺序应该是怎样的呢?
html==>css==>javascript==>jsp==>xml 1.先学习基本的HTML知识,了解大部分HTML标签的作用. 2.学习CSS,熟悉如何用CSS去控制HT ...
- JSP web.xml <jsp-config>标签使用详解
<jsp-config> 包括 <taglib> 和 <jsp-property-group> 两个子元素.其中<taglib> 元素在JSP 1.2 ...
- jsp操作xml
<?xml version="1.0" encoding="UTF-8"?> <!-- 说明是xml文件,文件的版本和字符编码 --> ...
- JSP XML 数据处理
JSP XML 数据处理 当通过HTTP发送XML数据时,就有必要使用JSP来处理传入和流出的XML文档了,比如RSS文档.作为一个XML文档,它仅仅只是一堆文本而已,使用JSP创建XML文档并不比创 ...
- JSP-Runoob:JSP XML 处理数据
ylbtech-JSP-Runoob:JSP XML 处理数据 1.返回顶部 1. JSP XML 数据处理 当通过HTTP发送XML数据时,就有必要使用JSP来处理传入和流出的XML文档了,比如RS ...
- 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 ...
- HTML/XML/XPATH基础
Html超文本标记语言 网页上单击右键→查看源文件/查看源代码 Html基本结构 <html> 为文档根元素,所有元素都在内部进行 <head> ...
- XML之XPath
1.在 XPath 中,有七种类型的节点:元素.属性.文本.命名空间.处理指令.注释以及文档节点(或称为根节点). 1.1 XPath 术语 节点(Node) 在 XPath 中,有七种类型的节点:元 ...
随机推荐
- 系统根据用户cookies,为用户打上各种标签
DSP营销学院_品友学院 | 品友推广官网 http://e.ipinyou.com/school_article40.html 智能算法+动态出价=最大发挥推广费用的价值 针对每一个曝光进行甄别和竞 ...
- 天天QA
w 0-Qphp 在全局范围内访问变量有哪几种方法A2种 <?php$a = 1;$b = 2;var_dump($GLOBALS); <?php$a = 1;$b = 2; functi ...
- The Log: What every software engineer should know about real-time data's unifying abstraction
http://engineering.linkedin.com/distributed-systems/log-what-every-software-engineer-should-know-abo ...
- 关于this,作用域,属性,原型链的一个小练习
function p () { this.name = 'x'; var name = 'y'; this.getName = function () { return name; } } // 求值 ...
- Python游戏引擎开发(五):Sprite精灵类和鼠标事件
本次来实现Sprite类和鼠标事件. 说起这个Sprite啊,涉及过2D游戏研究领域的看官应该都听说过它. 它中文原意是"精灵",只是在不同人的眼中,它所表示的意义不同. 比方说在 ...
- android 6 (API 23) 及更高版本 面向 NDK 开发者的 Android 变更
Android N 已经出来,有了好大的变化,对于我们开发者来说,最大的影响莫过于**NDK**相关东西. 以下是在中国谷歌开发者社区看到的.里面有好多的变化,欢迎大家来讨论. 发布人:开发顾问 Dm ...
- 利用WebBrowser实现自动登入功能
公司内部改革,对考勤方面做出调整,要求实现办公自动化,在OA进行上下班考勤:作为程序员,突发奇想如何实现自动化考勤应用? 需求如下: 可设置考勤地址.用户信息.上下班时间: 根据设置的上下班时间,定时 ...
- 超过两行显示省略号 -webkit-line-clamp、-webkit-box-orient vue打包后不起作用
为了实现两行显示缩略显示,但是本地是可以显示,打包后不起作用 word-break: break-all; text-overflow: ellipsis; display: -webkit-box; ...
- Tornado的基本知识
Tornado是FriendReed使用的可扩展的非阻塞式的web服务器及其相关工具的开源版本. 这个框架看起来有些像web.py或者Google的webapp,不过为了能有效利用非阻塞服务器环境,这 ...
- maven依赖排除、顺序原则、版本统一管理
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-core& ...