xpath

 1     // 使用xpath解决路径的问题
 2     public static void findAnswer(File file)throws Exception{
 3         // 10.1获取解析器
 4         SAXReader reader = getReader();
 5         // 10.2解析文档
 6         Document doc = reader.read(file);
 7         Element name = (Element) 
 8 doc.selectSingleNode("/linkmans/linkman[1]/linkman/name");
 9         System.out.println(name.getText()); 
10     }

否则要以下解决,以下解决太杂乱。以下代码缺点:

发现如果需要遍历一个比较深的元素节点,那么需要多次的element()。

如:存储一个自己的隐私文件需要建立100个文件夹吗?

那么如果路径比较长需要进行路径访问的方式的优化。

如果在DOM4J进行解析查找元素可以使用类似Windows中的路径模式来查找元素那么就变得简单且高效。

 1 // 获取linkman中的linkman
 2     public static void findQuestion(File file)throws Exception{
 3         // 10.1获取解析器
 4         SAXReader reader = getReader();
 5         // 10.2解析文档
 6         Document doc = reader.read(file);
 7         Element inner_name = doc.getRootElement()  // 获取根元素
 8 .element("linkman")        // 获取第一个linkman元素
 9 .element("linkman")        // 获取第一个linkman中的第一个linkman元素
10 .element("name");             // 获取上面的name元素
11         System.out.println(inner_name.getText());
12     }
View Code

 

Xpath简介

Xpath是一个独立的一个路径语言,主要的目的是为了查找路径中的元素。

那么DOM4J默认支持Xpath的路径查找。

常用的方法有以下的两种:

selectNodes(“xpath”)            à 查询指定路径的所有的元素

selectSingleNode(“xpath”)     à 查询指定路径的第一个元素

   常用的Xpath路径写法

/AAA            指定从XML文档的根开始写路径

//BBB             指定从整个XML中搜索满足的元素名

/AAA/CCC/DDD/* 指定路径下所有的元素

//*                 指定获取所有的元素

/AAA/BBB[1]  指定路径下的第一个元素,一定是以1开始的

/AAA/BBB[last()]  指定路径下的最后一个元素

//@id        指定要获取的属性元素

//BBB[@id]           指定带属性的元素

//BBB[@id='b1']   指定属性值的元素

//BBB[ position() = floor(last() div 2 + 0.5) or position() = ceiling(last() div 2 + 0.5) ]

 

posted on 2014-05-13 15:33  wf110  阅读(298)  评论(0编辑  收藏  举报