1 引入

问题:当使用dom4j查询比较深的层次结构的节点(标签,属性,文本),比较麻烦!!!

2 xPath作用

主要是用于快速获取所需的节点对象。

3 dom4j中如何使用xPath技术

1)导入xPath支持jar包 。  jaxen-1.1-beta-6.jar

2)使用xpath方法

List<Node>  selectNodes("xpath表达式");   查询多个节点对象

Node       selectSingleNode("xpath表达式");  查询一个节点对象

4 xPath语法

/      绝对路径      表示从xml的根位置开始或子元素(一个层次结构)

//     相对路径       表示不分任何层次结构的选择元素。

*      通配符         表示匹配所有元素

[]      条件           表示选择什么条件下的元素

@     属性            表示选择属性节点

and     关系          表示条件的与关系(等价于&&

text()    文本           表示选择文本内容

代码练习:

package com.dom4j.xpath;

import java.io.File;
import java.util.List;

import org.dom4j.Document;
import org.dom4j.Node;
import org.dom4j.io.SAXReader;



public class xpathExercise {
    
    public static void main(String[] args) throws Exception {
        Document doc = new SAXReader().read(new File("./src/contact.xml"));
        String xpath = "";
        xpath = "/contactList";
        xpath = "//contact/name";
        xpath = "//name";
        xpath = "/*/*/age";
        xpath = "/contactList/*";
        xpath = "/contactList//*";
        xpath = "//contact[@value]";
        xpath = "//contact[@id]";
        xpath = "//contact[2]";
        xpath = "//contact[last()]";
        xpath = "//@id";
        xpath = "//contact[not(@id)]";
        xpath = "//contact[@id='003' and @value='hello']";
        xpath = "//name/text()";//返回ext
        xpath = "//contact/name[text()='张三']";
        List<Node> list = doc.selectNodes(xpath);
        for(Node node : list){
            System.out.println(node);
        }
    }

}
View Code

相关文章: