zoukankan      html  css  js  c++  java
  • JSP标准标签库(JSTL)--XML标签库 x

    ³在开发中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标签库之中提供了判断、循环等常见操作。
  • 相关阅读:
    JLable设置复制粘贴
    JLable设置背景颜色
    JFrame 居中显示
    String、StringBuffer、StringBuiler区别
    java读取本地文件
    mybatis 添加后获得该新增数据自动生成的 id
    验证身份证号规则(验证身份证号是否正确)
    MyBatis like (模糊查询)
    MyBatis if test 传入一个数字进行比较报错 There is no getter for property named 'userState' in 'class java.lang.Integer'
    Redis 中 byte格式 写入、取出
  • 原文地址:https://www.cnblogs.com/wujixing/p/5018832.html
Copyright © 2011-2022 走看看