首页 / 软件开发 / JAVA / JasperReport那些事儿(三)——使用XPATH查询XML
        
            JasperReport那些事儿(三)——使用XPATH查询XML2009-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="女"]