欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

使用dom4j中的XPath查询 博客分类: dom4j dom4jxpath

程序员文章站 2024-03-20 08:10:34
...

http://www.ibm.com/developerworks/cn/xml/x-injava/#N100FD

为了方便用户更加快捷的查询,Dom4j支持灵活的Xpath,下面是经常用的语法

1.       格式:/element

涵义:表示到一个element元素的绝对路径

例子:root.selectSingleNode("restaurant/company");

结果:表示xml文件中根节点下的company节点

2.       格式:// element

涵义:表示在父节点下,所有名叫element的节点元素,不论层级

例子:root.selectNodes("//food")

结果:xml文件中,所有标记为food节点的集合

3.       格式1/*

涵义:选择所有由星号之前的路径所定位的元素

例子1root.selectNodes("/*")

结果1:得到的集合中只包含了restaurant节点

例子2root.selectNodes("restaurant/company/*")

结果2:得到company节点下所有节点的集合

例子3root.selectNodes("*/*/*/fruit")

结果3:得到除根节点下满足第四层元素为fruit的节点集合,本例子中只有一个

4.       格式:/aa/bb[n]   n>=1

涵义1:表示aa节点下标记为bb的第n个元素

例子:restaurant.selectSingleNode("company/service/foods/food[2]")

结果:获得xml文件中foods节点下的第二个food节点

格式2/aa/bb[last()]   

涵义:表示aa节点下标记为bb的最后一个元素

例子:company.selectSingleNode("service/foods/food[last()]")

结果2:获得xml文件中foods节点下最后一个food节点

5.       格式1//@id

涵义:获得所有属性为idAttribute对象集合

例子:root.selectNodes("//@price");

结果:获得xml文件中所有属性名为price的属性集合,本例子*有五个

格式2//name[@id]

涵义:获得所有属性为id的,并且标记为name节点元素集合

例子:root.selectNodes("//food[@price")];

结果:获得所有属性名为price的并且标记为food的节点集合,本例子*有4

格式3//name[@*] 

涵义:获得所有任意属性名的,并且标记为name节点元素集合

例子:root.selectNodes("//food[@*")];

结果:获得有任意属性名的并且标记为food的节点集合,本例子*有4

格式4//name[not(@*)] 

涵义:获得所有满足没有属性名的标记为name的节点元素集合

例子:root.selectNodes("//food[not(@*)]");

结果:获得所有形式如<food/>的节点集合,本例子*有0

格式5//*[not(@*)] 

涵义:获得所有满足没有属性名的节点元素集合

例子:root.selectNodes("//*[not(@*)]");

结果:获得xml文件中所有没有属性的节点集合,本例子*有10

6.       格式://name[@id=’n’]

涵义:获得所有属性为id的,其值等于n的,并且标记为name节点元素集合

例子:root.selectSingleNode ("//food[@price ='2'];

结果:获得xml文件中标记为food,并且其price属性的值为2的节点

7.       格式://aaa | //bbb

涵义:|表示与关系获得文档中所有标记为aaa或者bbb的元素集合

例子:root.selectNodes("//food | fruit");

结果:获得xml文件中所有标记为foodfruit的节点集合,本例子中有4

相关标签: dom4j xpath