快速业务通道

JasperReport那些事儿(三)——使用XPATH查询XML - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-24

JasperReport那些事儿(三)——使用XPATH查询XML

时间:2009-12-15 BlogJava Heis

同事Q:“小黑,你上次说一半不说一半,这次可得老实交待怎么从XML查询数据了吧。”

俺:“好好,我这就交待。你看我这星期不是忙得焦头烂额么?”(注:忙永远是程序员的借口)

其实JasperReport使用的也不是什么神秘的东西,就是XPATH。

XPath 是一门在 XML 文档中查找信息的语言。XPath 可用来在 XML 文档中对元素和属性进行遍历(从w3cshool抄来的)。关于XPATH,我就不详细讲了,因为对于普通的报表,只需要掌握几个常用的查询;如果想深究网上有更好的教程(教程可以点这里)。我这里只简单地讲解XPATH的一些概念和常用的一些查询。

(1)什么是绝对路径和相对路径?

我这里那是拿出我的NameList做例子吧。

<?xml version="1.0" encoding="utf-8" ?> <NameList> <Person> <Name>强尼</Name> <Gender>男</Gender> <Age>56</Age> </Person> <Person> <Name>阿美</Name> <Gender>女</Gender> <Age>23</Age> </Person> <Person> <Name>李丽</Name> <Gender>女</Gender> <Age>58</Age> </Person> </NameList>

例如我要选取所有的Person节点,那绝对路径应该这样写:

/NameList/Person

现在以Person作为根路径,如果要选取所有Person节点下的Name节点,那相对路径可以这样写:

Name

所谓的相对路径是不以/开头,相对与一个绝对路径的路径。如果用绝对路径选取所有Name节点,可以这样写:

/NameList/Person/Name

(2)带条件的XPATH查询

XPATH的条件是写在路径后的一个方括号内,条件支持XPATH的函数和一些逻辑运算符号。常用的逻辑运算符号有+,<,=,or,and等。以下是一些例子。

选取第一个Person节点

/NameList/Person[1]或/NameList/Person[position()=1]

选取Age小于50的Person节点

/NameList/Person[./Age<50]

选取Gender是女的Person节点

/NameList/Person[./Gender=''女'']

JasperReport那些事儿(三)——使用XPATH查询XML(2)

时间:2009-12-15 BlogJava Heis

(3)XPATH的函数

count()函数主要是计算节点数量,可以带一个参数,例如

查询Person的节点数量,结果返回3

count(/NameList/Person)

position() 函数主要是用于条件查询,返回节点的定位,例如

选取前两个Person节点

/NameList/Person[position()<=2]

简单介绍完XPATH,下面我们来看XPATH怎么在JasperReport里运用。我在JasperReport那些事儿(一)里曾经介绍过XPATH的使用,但是没有做详细介绍。现在我们再来看其中的一个步骤。

看第十步,其实这里就是配置了一个根路径/NameList/Person,下面几个field的Descirption其实也是XPATH表达式,配置了相对路径。通过XPATH表达式,field会获取到匹配节点的值,这就是XML数据填充的过程。

10)打开NameList_subreport0模板,先配置XPATH,然后右击节点Name,选Add node as field.同样将Gender和Age节点加入field。点OK。然后你可以看到左边的结构视窗多了三个Field。

程序员的一生其实可短暂了,这电脑一开一关,一天过去了,嚎;电脑一开不关,那就成服务器了,嚎……

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号