• jsp:xpath


    .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"/>
    

      

  • 相关阅读:
    npm修改为淘宝源
    将蓝牙rssi(信号强度)转换成距离
    goland 可用注册码(license)
    用爬虫实现验证码识别并模拟登陆和cookie操作、代理操作、线程池
    爬虫概述
    初识ES()
    ansible中的playbook(剧本)
    ansible中File模块、Fetch模块、Yum模块、Pip模块、Service模块、Cron模块、User模块、Group模块
    ansible的安装与介绍、host-pattern格式、ansible的command模块、ansible的shell模块、ansible的script模块、ansible的copy模块
    Flask中的before_request装饰器和after_request装饰器以及WTForms组件
  • 原文地址:https://www.cnblogs.com/achengmu/p/8325724.html
Copyright © 2020-2023  润新知