`
Heis
  • 浏览: 114400 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

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

阅读更多

同事Q:“小黑,你上次说一半不说一半,这次可得老实交待怎么从XML查询数据了吧。”
       俺:“好好,我这就交待。你看我这星期不是忙得焦头烂额么?”(注:忙永远是程序员的借口)

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

(1)什么是绝对路径和相对路径?
我这里那是拿出我的NameList做例子吧。

<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> --><? 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节点,那绝对路径 应该这样写:

<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> -->/NameList/Person

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

<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> -->Name

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

<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> -->/NameList/Person/Name


(2)带条件的XPATH查询
XPATH的条件是写在路径后的一个方括号内,条件支持XPATH的函数和一些逻辑运算符号。常用的逻辑运算符号 有+,<,=,or,and等。以下是一些例子。
选取第一个Person节点

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

选取Age小于50的Person节点

<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> -->/NameList/Person[./Age<50]

选取Gender是女的Person节点

<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> -->/NameList/Person[./Gender='女']


(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。
  



 

1
0
分享到:
评论

相关推荐

    jasperreport中文资料——梧桦椰枫(收集).zip

    它使用XML或Java代码来定义报告布局,并支持多种数据源,包括数据库连接、CSV文件、XML数据等。JasperReport与C#语言的结合主要通过iReport设计工具,使得非Java开发者也能利用其功能。 **C#入门详解**:虽然...

    jasperreport 生成pdf,html,xml,csv,xls报表,myeclipse源码

    1. **报表设计**:jasperreport使用JRXML格式的XML文件来定义报表布局和样式。这些设计文件可以包含文本、图像、表格、图表等多种元素,并支持复杂的排版和样式设置。 2. **数据绑定**:jasperreport支持多种数据源...

    jasperReport5.6.1编码以及使用

    jasperReport5.6.1编码以及使用 JasperReport是一款功能强大的报表生成工具,广泛应用于各种Java应用程序中。下面是关于JasperReport5.6.1编码以及使用的详细知识点。 JasperReport编码 JasperReport编码是指在...

    JasperReport与iReport的配置与使用.docx

    JasperReport与iReport的配置与使用 JasperReport与iReport是两款流行的报表工具,它们可以帮助开发者快速生成各种格式的报表。以下是关于JasperReport与iReport的配置与使用的详细知识点: JasperReport简介 ...

    使用JasperReport制作PDF所需要的包(2)

    5. **jaxen-1.1.1.jar**:这是一个XML查询引擎,支持XPath语法。在JasperReport中,XPath被用来从XML数据源中提取数据,用于填充报告。 6. **png-encoder-1.5.jar**:这个库提供了PNG图像的编码功能。在生成PDF报告...

    jasperReport +spring 的使用

    jasperReport通过一个XML文件定义报表布局,并通过Java API来填充数据并生成最终的报表文档。这一过程通常涉及到多个步骤:设计报表模板、填充数据以及导出报表。 在集成Spring框架的情况下,jasperReport能够更好...

    jasperreport

    在JasperReport 4.0.0版本中,用户可以利用其内置的报表设计工具——JasperDesign,通过GUI界面或者XML格式来定义报表结构。报表设计主要包括以下几个关键组成部分: 1. **字段(Fields)**:字段是报表中显示的...

    使用JasperReport+iReport进行WEB开发

    JasperReport和iReport的结合使用,为开发者提供了一种高效、灵活的方式来设计和生成复杂的报表。本文将深入探讨如何利用这两个工具进行WEB开发。 JasperReport是一款开源的Java报表库,它支持多种数据源,如数据库...

    使用JasperReport输出image图像

    标题“使用JasperReport输出image图像”涉及到的关键技术点是JasperReport的图像生成和导出功能。在描述中提到的场景是,一个项目需要在文档中添加可识别的元素,比如条形码,然后将包含这些元素的文档作为图像保存...

    JasperReport+Servlet Web应用之:打印预览

    - 使用`JasperFillManager.fillReport()`方法填充数据到JasperReport对象,数据可以从数据库查询、Java集合或其它数据源获取。 - `JasperExportManager.exportReportToPdf()`方法将报告导出为PDF格式,适合打印...

    JasperReport实例导入可用

    - `lib` 目录:包含项目依赖的库文件,如 JasperReport 的 JAR 包和其他第三方库。 3. **导入项目** 使用 IDE(如 IntelliJ IDEA 或 Eclipse)导入 `JasperReport_Prj`,通常选择 "Import" 或 "Open Project" ...

    jasperReport测试例子

    这个测试例子是关于如何使用jasperReport进行报表设计和开发的实践代码和学习资源集合。通过这个测试项目,我们可以深入理解jasperReport的工作原理,以及如何在Java应用程序、JSP或Web环境中集成报表功能。 ...

    ireport+jasperreport API

    三、iReport与JasperReport的协同使用 iReport&JasperReport配置使用.pdf指导了如何将ireport设计的模板与jasperreport API结合,实现报表的动态生成和交互。 1. 模板设计与编译:在iReport中设计报表模板后,通过...

    JasperReport报表设计总结

    #### 三、JasperReport的集成与部署 在Web应用程序中集成JasperReport通常需要将相关库文件(如JasperReport库、iText库等)添加到项目的`WEB-INF/lib`目录下。例如,对于JasperReport 1.3.3版本,可能需要以下库...

    Jasperreport资料

    **JasperReport——深度解析与应用指南** JasperReport是一款强大的开源报表工具,它允许开发者在Java应用程序中创建复杂的报表。作为一个基于纯Java的报表引擎,JasperReport能够处理多种数据源,包括数据库连接、...

    JasperReport使用

    【JasperReport使用】这篇教程主要讲解如何使用JasperReport设计和生成报表,特别是通过iReport这个可视化工具来创建报表模板。JasperReport是一个开源的Java报表库,它允许开发者生成复杂的报表,包括数据的计算、...

    jasperReport资料文档4

    ### jasperReport资料文档4 —— 从数据库创建动态报表 #### 一、概述 本文档旨在指导用户如何使用JasperReports从数据库中创建动态报表。动态报表是指那些能够根据实时或预先设定的数据源更新其内容的报表。通过...

    JasperReport动态生成报表

    报表设计是JasperReport的基础,通常通过JasperReport的图形化设计工具——iReport或Jaspersoft Studio进行。这些工具允许开发者用拖放的方式创建报表布局,包含表格、图表、文本框、图片等多种元素。设计过程中,...

    jasperReport资料文档5

    ### jasperReport资料文档5 —— 使用非数据库数据源创建报表 #### 概述 本文档探讨了如何利用非数据库数据源在JasperReports中创建报表。除了传统的数据库连接之外,JasperReports还支持多种其他数据源,如空数据...

Global site tag (gtag.js) - Google Analytics