`

JSTL-XML标签

    博客分类:
  • JSTL
 
阅读更多

JSP页面引入:<%@ taglib prefix="x" uri="http://java.sun.com/jsp/jstl/xml"%>

 

1.用于解析XML文件的<x:parse>

        解析XML文件

        doc:指定要解析的XML文件。一般使用<c:import>检索到相应的XML文件。  

        var:把解析之后的XML文件存储在var属性指定的变量中。  

        scope:设置var属性指定的变量有效范围。  

        varDom:存储解析后的XML文件。 
        scopeDom:设置varDom属性指定变量的有效范围。  

        systemId:指定XML文件的URI。 
        filter:对应的是org.xml.sax.XMLFilter类。

        var、scope和varDom、scopeDom不应该同时出现,而应该被视为两个版本来使用,二者的变量都可以被XML processing标签库的其他标签来使用。

 

2.用于显示XML内容的<x:out>

    依靠XPath技术,需要xalan-j的jar包

        select XPath表达式 
        escapeXml 当特殊字符如:“<,>,&,’,””出现在取得的结果字符串中时,将以转义字符来替换

3.用于保存XML内容的<x:set>

    依靠XPath技术,需要xalan-j的jar包

        select XPath表达式 

        var 保存结果的变量名 

        scope 变量的作用范围(可选)

 

4.用于判断的<x:if>

    XPath的boolean()函数得到的判断结果,来判断是否显示其标签所包含的内容。

        select XPath表达式 

        var 保存boolean类型结果的变量名(结果为boolean类型)

        scope 变量的作用范围(可选)

 

5.用于复杂判断的<x:choose>、<x:when>、<x:otherwise>

    这组标签将一起使用,来提供“if elseif”语句的功能。 
        <x:choose>标签没有属性,可以被认为是父标签,<x:when>、<x:otherwise>将作为其子标签来使用。 

        <x:when>标签等价于“if”语句,它包含一个test属性,该属性为XPath判断表达式。 

        <x:otherwise>标签没有属性,它等价于“else”语句。

 

6.用于对XML元素循环的 <x:forEach>

    <x:forEach>为对XML文件中同一名称元素的循环控制标签。

        select XPath表达式,结果是一个集合,将对该集合进行循环(可选) 

        begin 开始条件(可选) 

        end 结束条件(可选) 
        step 循环的步长,默认为1(可选) 
        var 做循环的对象变量名,表示XPath表达式结果集合中的一个对象(可选) 

        varStatus 显示循环状态的变量(可选)

 

7.格式化XML显示数据的<x:transform>、<x:param>

    <x:transform>:用于把XML文件转换成XSLT格式。  、

    <x:param>:和<x:transform>配套使用,用于传递参数

    doc 源XML的内容,该属性的内容应该为String、java.io.Reader、javax.xml.transform.Source、

           org.w3c.dom.Document的实例,或者从<x:parse>、<x:set>两个标签得到。

           可以用xml属性来替代,但是不被推荐(可选)

    xslt 源XSLT的内容,该属性的内容应该为String、java.io.Reader、javax.xml.transform.Source的实例(可选) 
    docSystemId 定义一个URI,该URI将被使用到XML文件中以接入其他资源文件。可以用xml SystemId属性来替代,但是不被推荐(可选) 
    xsltSystemId 定义一个URI,该URI将被使用到XSLT文件中以接入其他资源文件(可选) 

    var 将格式化后的XML文件保存在该属性所指定的变量中,保存的变量为org.w3c.dom.Document接口类型(可选) 

    scope 变量的作用范围(可选) 
    result 保存转化结果的变量,保存的变量为javax.xml.transform.Result类型的实例(可选)

   

8.示例

   XPATH教程:http://www.w3school.com.cn/xpath/index.asp

 

  

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<%@ taglib prefix="x" uri="http://java.sun.com/jsp/jstl/xml"%>
<%@ page import="java.util.List,java.util.ArrayList"%>
<html>
<head>
<title>JSTL XML标签</title>
</head>
<body>
	<c:import var="xmlFile" url="http://localhost:8099/WebTest/test.xml" charEncoding="UTF-8"></c:import>
	<x:parse var="testXml" doc="${xmlFile }"></x:parse>
	
	<%-- <x:parse var="testXml">
		<?xml version="1.0" encoding="UTF-8"?>
		<test>
			<name>
				名称
			</name>
			<values>
				<value>值A</value>
				<value>值B</value>
				<value><font color="green">值C</font></value>
			</values>
			<values>
				<val>值A1</val>
				<val>值B1</val>
				<val><font color="blue">值C1</font></val>
			</values>
			<values>
				<val>值A2</val>
				<value>值B2</value>
				<value></value>
			</values>
			<properties>
				<value>属性1</value>
				<value>属性2</value>
				<value>属性3</value>
			</properties>
		</test>
	</x:parse> --%>
	
	<x:set var="name" select="$testXml/test/name"/>
	

	输出所有节点:<x:out select="$testXml"/>
	<br/>
	输出要目录所有节点:<x:out select="$testXml/test"/>
	<br/>
	输出节点name:<x:out select="$testXml/test/name"/>
	<br/>
	输出Set后的结点name:<x:out select="$name"/>
	<br/>
	输出节点values下的所有节点:<x:out select="$testXml/test/values"/>
	<br/>
	输出节点values下的第一个value节点:<x:out select="$testXml/test/values/value"/>
	<br/>
	输出第一个value节点:<x:out select="$testXml//value"/>
	<br/>
	输出第一个value节点:<x:out select="$testXml/test/*/value"/>
	<br/>
	输出第一个包含val节点的values节点的所有节点:<x:out select="$testXml/test/values[val]"/>
	<br/>
	输出第一个包含val(val节点值为'值A2')节点的values节点的所有节点:<x:out select="$testXml/test/values[val='值A2']"/>
	<br/>
	<hr/>
	<br/>
	循环,IF选择,循环值保存在变量中:<br/>
	<x:forEach select="$testXml/test/values/value" var="val">
		<x:if select=".">
			<x:out select="$val" escapeXml="false"/>
		</x:if>
		<x:if select="./font">
			<font color='<x:out select="./font/@color"/>'><x:out select="$val" escapeXml="false"/></font>
		</x:if>
	</x:forEach>
	<br/>
	循环,Choose选择,循环值不保存在变量中,循环状态:<br/>
	<x:forEach select="$testXml/test/values/val" varStatus="s">
		<c:out value="${s.index}" />,
		<c:out value="${s.count}" />,
		<c:out value="${s.first}" />,
		<c:out value="${s.last}" />,
		<x:choose>
			<x:when select="./font">
				<font color='<x:out select="./font/@color"/>'><x:out select="."/></font>
			</x:when>
			<x:otherwise>
				<x:out select="."/>
			</x:otherwise>
		</x:choose>
		<br/>
	</x:forEach>
	<br/>
	<hr/>
	<br/>
</body>
</html>

 

输出:

输出所有节点: 名称 值A 值B 值C 值A1 值B1 值C1 值A2 值B2 属性1 属性2 属性3
输出要目录所有节点: 名称 值A 值B 值C 值A1 值B1 值C1 值A2 值B2 属性1 属性2 属性3
输出节点name: 名称
输出Set后的结点name: 名称
输出节点values下的所有节点: 值A 值B 值C
输出节点values下的第一个value节点:值A
输出第一个value节点:值A
输出第一个value节点:值A
输出第一个包含val节点的values节点的所有节点: 值A1 值B1 值C1
输出第一个包含val(val节点值为'值A2')节点的values节点的所有节点: 值A2 值B2



循环,IF选择,循环值保存在变量中:
值A 值B 值C 值C 值B2
循环,Choose选择,循环值不保存在变量中,循环状态:
0, 1, true, false, 值A1
1, 2, false, false, 值B1
2, 3, false, false, 值C1
3, 4, false, true, 值A2



 

 

 

   

 

分享到:
评论

相关推荐

    jstl-api-1.2.jar、jstl-impl-1.2.jar

    **JSTL(JavaServer Pages Standard Tag Library)** 是一个标准的标签库,用于简化JavaServer Pages(JSP)开发。它提供了许多预定义的标签,使得开发者可以更方便地处理常见任务,如控制流、迭代、XML处理等,而...

    jstl标签jar包(jstl-api-1.2和jstl-impl-1.2)

    JavaServer Pages Standard Tag Library (JSTL) 是Java Web开发中的一个重要组成部分,它提供了一组预定义的标签,用于简化HTML或XML页面的编写,尤其是Servlet和JSP应用。JSTL的主要目标是减少在JSP页面中使用脚本...

    jstl-impl-1.2.jar和jstl-api-1.2.jar

    JSTL是一个标准的标签库,提供了许多预定义的标签,可以简化常见的任务,如迭代、条件判断、XML处理等,避免了在页面上过多地使用脚本let和scriptlet。 "jstl-impl-1.2.jar"和"jstl-api-1.2.jar"是JSTL 1.2版本的两...

    jstl-impl-1.2.jar.rar_ jstl-impl-1.2.jar _jstl-impl-1.2_jstl-imp

    标题中的"jstl-impl-1.2.jar.rar"是一个压缩文件...配合Eclipse这样的IDE,可以提高开发效率,并且通过导入这个JAR文件,开发者可以在项目中使用JSTL标签来处理页面逻辑,实现与数据库的交互,以及处理XML数据等任务。

    包含jstl-api-1.2.1.jar,jstl-1.2.jar,jstl-impl-1.2.jar,standard-1.1.2.jar

    这个jar包与jstl-api-1.2.1.jar一起使用,提供了如控制流标签、SQL操作、XML处理等功能。 3. jstl-impl-1.2.jar:此文件可能是JSTL的另一个实现版本或者包含某些特定实现的扩展,其具体作用可能与jstl-1.2.jar类似...

    jstl-api-1.2.jar和jstl-impl.jar

    JSTL有多个核心模块,包括Core(基础标签库)、Format(国际化和格式化)、XML(XML处理)和Function(自定义函数)。在描述中提到的"必须用到的两个标签库"可能是指Core库,这是JSTL最常用的部分,提供了基本的控制...

    jakarta.servlet.jsp.jstl-api-2.0.0.jar

    标题中的"jakarta.servlet.jsp.jstl-api-2.0.0.jar"是一个重要的Java Web开发组件,它属于JavaServer Pages(JSP)标准标签库(JSTL)的一部分,用于提供一套标准的标签来简化HTML或XML文档的生成。JSTL的主要目标是...

    jstl-api-1.2.jar

    3. **XML标签库**(JSTL XML或JSTL FX):处理XML文档,包括解析、查询、转换等操作。例如`&lt;x:parse&gt;`, `&lt;x:out&gt;`, `&lt;x:transform&gt;`等,其中`x`代表XML。 4. **Function标签库**:提供了一系列预定义的函数,可以...

    jstl-api-1.2.jar jstl-impl-1.2.jar

    - **XML标签库** (`x`库):处理XML文档,包括解析、转换和操作XML数据。 使用JSTL的好处包括: - **提高可维护性**:通过使用预定义的标签,可以将业务逻辑和展示逻辑分离,使代码更易于理解和维护。 - **减少Java...

    jst-1.2、jstl-api-1.2、jstl-impl-1.2的jar包

    **JSTL(JavaServer Pages Standard Tag Library)** 是一个标准的Java标签库,用于增强JSP页面的功能,简化Web应用开发。它提供了一系列预定义的标签,使得开发者可以通过简单的XML语法来处理常见任务,如迭代、...

    内含jstl-1.2、jstl-api-1.2、jstl-impl-1.2、standard-1.1.2

    JavaServer Pages Standard Tag Library (JSTL) 是Java Web开发中的一个重要组件,它提供了一组预定义的标签库,使得开发者能够用更简洁、更易读的XML-like语法来实现常见的JSP页面逻辑,比如迭代、条件判断、国际化...

    jstl-api-1.2.jar、jstl-impl-1.2.jar、mysql-connector-java-5.1.10-bin.jar

    4. **JSTL XML标签**:用于处理XML文档,包括解析、操作和生成XML数据。 **MySQL Connector/J** `mysql-connector-java-5.1.10-bin.jar`是MySQL数据库官方提供的Java驱动程序,使得Java应用程序能够与MySQL数据库...

    jstl-api-1.2.jar jstl-impl-1.2.jar mysql-connector-java-5.1.10-bin.jar

    1. 配置JSTL:在web.xml文件中添加JSTL相关的标签库描述,以使JSP页面能够识别并使用JSTL标签。 2. 配置MySQL连接:在Java代码或配置文件中设置数据库连接参数,如URL、用户名、密码等,以建立与MySQL数据库的连接。...

    jstl-1.1.0.jar和jstl-1.2.0.jar

    **JSTL(JavaServer Pages Standard Tag Library)**是Java Web开发中的一种标准标签库,它为JSP页面提供了一套方便使用的标签,用于简化HTML和Java代码的结合,提高开发效率。标题提到的`jstl-1.1.0.jar`和`jstl-...

    JSTL-XML-Xpath

    JSTL的核心部分包括了I/O、格式化、SQL、XML等标签,极大地提高了JSP的可读性和可维护性。 **XML** (eXtensible Markup Language) 是一种标记语言,用于存储和传输数据,特别适合结构化的数据。XML文档结构清晰,...

    jstl-api-1.2.jar,jstl-impl-1.2.jar,mysql-connector-5.1.8.jar开发必备,三合一jar下载,已验证可用

    JSTL(JavaServer Pages Standard Tag Library)是Java Servlets和JavaServer Pages(JSP)中的一组标准标签库,它提供了一系列预定义的标签,用于简化页面逻辑和增强JSP页面的可读性。`jstl-api-1.2.jar`包含JSTL的...

    jstl.jar,jstl-1.2.jar,jstl-api-1.2.jar

    JSTL提供了多种核心标签,涵盖了流程控制、字符串操作、XML处理等功能,极大地提高了Web开发效率。 标题中提到的三个文件`jstl.jar`、`jstl-1.2.jar`和`jstl-api-1.2.jar`在Java Web项目中起着关键作用: 1. **...

    Java web常用包javax.servlet.jsp.jstl-1.2.1.zip

    在Java Web开发中,`javax.servlet.jsp.jstl`是一个重要的库,全称为JavaServer Pages Standard Tag Library,即JSTL(JavaServer Pages 标准标签库)。这个库提供了用于增强JSP页面功能的一系列标准标签,使得...

    jstl-1.2.jar

    JSTL,全称为JavaServer Pages Standard Tag Library,是Java服务器页面标准标签库,它为JSP开发提供了一系列预定义的标签,使得开发者可以更加便捷地进行页面逻辑控制,从而将业务逻辑与展示逻辑分离。jstl-1.2.jar...

    jstl-1.2.jar standard-1.1.2.jar

    在Java Web开发中,JSTL(JavaServer Pages Standard Tag Library)是一个重要的标准标签库,它提供了多种用于处理常见任务的标签,如迭代、条件判断、XML处理、URL操作等。JSTL的核心目标是减少JavaServer Pages...

Global site tag (gtag.js) - Google Analytics