JSTL提供了操作xml文件的标签库,使用xml标签库可以省去使用Dom和SAX标签库的繁琐,能轻松的读取xml文件的内容。
1 XML核心标签库
1.<x:parse>标签
<x:parse/>标签用来解析指定的xml文件。
【语法1】:
<x:parse doc=”xmlDocument” {var=”name”[scope=”page|request|session|application”]|varDom=”name”[scope=”page|request|session|application”]}
systemId=”systemId” filter=”filter”/>
【语法2】:
<x:parse {var=”name”[scope=”page|request|session|application”]|varDom=”name”[scope=”page|request|session|application”]}
systemId=”systemId” filter=”filter”>
xmlDocument
</x:parse>
<x:parse>标签属性说明
属性名:说明:EL:类型:必须:默认值
doc :指定解析的xml文件:是:String/Reader:是:无
var: 存储解析后的xml文件:否:String:否:无
scope: 指定var的JSP范围:否:String:否:page
varDom:以(org.w3c.dom.Doucemet)的形式存储解析的xml文件:否:String:否:无
scopeDom:指定varDom的JSP范围:否:String:否:page
systemId:xml文件的url: 是:String: 否:无
filter: 解析xml文件的过滤器:否:Org.xml.sax.Filter:否:无
提示:doc指定解析的xml文件并不是指定xml文件的路径,而是同<c:import>共同使用,由<c:import>加载并存储,然后使用<x:parse>解析。
例如:如果解析person.xml文件需要通过如下代码实现对xml文件的解析。
<c:import var="docString" url="person.xml"/><!--引入person.xml文件-->
<x:parse var="doc" doc="${docString}"/>
<c:import>语句用来导入或存储文件到JSP。如果不使用var来存储,xml文件将显式的出现在JSP文件中。
<x:parse>标签只用来解析xml文件,并不显示xml文件中的内容,如果想得到xml的节点元素或值需要使用<x:out>元素来实现。
2.<x:out>标签
<x:out>标签主要用来输出xml的信息。
【语法】:
<x:out select=”XpathExperssion”[excapeXml=”true|false”]>
<x:out>标签属性说明
属性名:说明:EL:类型:必须: 默认值
select: 指定使用的XPath语句:否:String:是:无
escapeXml: 是否转换特殊字符。如<等:否: boolean:是:true
提示:使用XPath语句需要用到xalan.jar支持包,可以从示例程序的lib中获取,获得直接从myEclipse中可以找到。
3.<x:set>标签
<x:set>标签用于将从xml文件节点解析的内容存储到JSP属性范围中。
【语法】:
<x:set select=”XPathExperssion” var=”name” scope=”page|request|session|application”>
【参数说明】:
(1)select通过指定的XPath表达式语句获取节点的值。
(2)var指定用于存储值的变量名。
(3)指定var的JSP属性范围。
2 XML流程控制
使用xml标签库的流程控制标签可以迭代处理xml文件的内容,流程控制可以分为以下两个方面的内容:
(1)条件判断。
(2)循环功能。
2.1.<x:if>
<x:if>主要用于条件判断。
【语法1】:未含有本体内容。
<x:if select=”XPathExperssion” var=”name”[scope=”page|request|session|application”]/>
【语法2】:含有本体内容。
<x:if select=”XPathExperssion” var=”name”[scope=”page|request|session|application”]>
本体内容
</x:if>
语法1只把根据条件表达式得到的结果的存储在JSP范围中,语法2根据<x:if>标签根据条件表达式的结果决定是否执行本体内的代码。
【参数说明】:
(1)select用来指定使用的XpathExperssion表达式。
(2)var设定标量名用来存储表达式的结果。
(3)scope指定var存储的JSP属性范围。
2.2.<x:choose>、<x:when>和<x:otherwise>标签
同核心标签库的<c:choose>、<c:when>和<c:otherwise>标签作用相似,只是使用的条件表达式不同。
<x;choose>是主标签,<x:when>和<x:otherwise>放在<x:choose>标签体内共同使用。
【语法】:
<x:choose>
<x:when>
<x:when>
<x:otherwise>
</x:choose>
其中只有<x:when>有属性。
【语法】:
<x:when select=”XPathExperssion”>
2.3.<x:forEach>标签
<x;forEach>标签实现了对xml文档的遍历。
返回栏目页:http://www.bianceng.cnhttp://www.bianceng.cn/webkf/JSP/
【语法】:
<x:forEach select=”XPathExperssion”[var=”name”][varStartus=”StartusName”] [begin=”begin”][end=”end”][step=”step”]>
//标签主体
</x:forEach>
<x:forEach>标签属性说明
属性名:说明: EL:类型:必须:默认值
select:指定使用的XPath语句:否:String:是:无
var:用于存储表达式的结果:否:String:否:无
varStatus: 用来存放循环到的变量的相关信息:否:String:否:无
begin:循环的起始位置:是:int:否:无
end:循环的终止位置:是:int:否:无
3 xml的文件转换
<x:transform>和<x:param>能轻易使用XSLT样式包装xml文件,成为另一种显示方式。
1.<x:transform>标签
使用该标签可以轻松的实现xml到XSLT的转化。
【语法1】:
<x:transform doc=”xmldoc” xslt=”XSLTStytlesheet”[docSystemId=”xmlsystemid”][result=”result”][var=”name”][scope=”scopeName”][xsltSystemId=”xsltsystemid”]/>
【语法2】:
<x:transform doc=”xmldoc” xslt=”XSLTStytlesheet”[docSystemId=”xmlsystemid”][result=”result”][var=”name”][scope=”scopeName”][xsltSystemId=”xsltsystemid”]>
<x:param/>
</x:transform>
【语法3】:
<x:transform doc=”xmldoc” xslt=”XSLTStytlesheet”[docSystemId=”xmlsystemid”][result=”result”][var=”name”][scope=”scopeName”][xsltSystemId=”xsltsystemid”]>
Xml文件内容
<x:param/>
</x:transform>
<x:transform>标签属性说明
属性名:说明:EL:类型:必须:默认值
doc:指定xml文件来源:是:String:是:无
xslt:转化xml的样式模板:是:String:是:无
docSystemId:xml文件的URI:是:String:否:无
xsltSystemId:xslt文件的URI:是:String:否:无
result:用来存储转换后的结果对象:是:java.xml.transform:是:无
var:以org.w3c.dom.Documet类型存储转换后的结果:否:String:否:无
scope:var的属性范围:否:String:否:无
2.<x:param>标签
该标签用来为<x:transform>标签转换参数。
【语法1】:
<x:param name=”name” value=”value”/>
【语法2】:
<x:param name=”name” value=”value”>
Value
</x:param>
【参数说明】:
(1)name指定参数的名称。
(2)value指定参数值。
作者:csdn博客 跬步小流