使用前请先导入Dom4j和XPATH的jar包
Dom4j:https://pan.baidu.com/s/1c16QTzU
XPATH:http://pan.baidu.com/s/1jIdiLaY
XPATH的作用:可以更加简洁高效的访问xml中的标签内容。
例如要获取如下代码的标签的内容,可以使用XPATH语句“Store/a/b/c/d”配合XPATH的特定函数实现高效访问。
<Store>
<a>
<b>
<c>
<d>我在这儿~</d>
</c>
</b>
</a>
</Store>
XPATH的常用语句:
XPATH的常用函数:
获取所有符合条件的节点
selectNodes(String xpathExpression) 返回List集合
获取符合条件的单个节点
selectSingleNode(String xpathExpression) 返回一个Node对象。
如果符合条件的节点有多个,那么返回第一个。
注意:他们返回值的都是Node类型,可以直接进行强转为Element类型。
已下为实验代码。
import java.io.File;
import java.io.FileInputStream;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
public class xpath {
public static void main(String args[]) throws Exception{
//创建Dom4j核心解析器对象。
SAXReader saxReader = new SAXReader();
//读入硬盘中的xml文件,并在内存中创建对象
Document xmlDocument =
saxReader.read(new FileInputStream(new File("write.xml")));
//获取根节点
Element rootElement = xmlDocument.getRootElement();
System.out.println("获取根结点名称:" + rootElement.getName());
System.out.println("--------------单一查找----------------");
//赋值XPATH语句
String XPATH = "/Store/a/b/c/d";
//利用XPATH语句查找节点。
//因为Node与Element有继承关系,所以可以进行强转。
Element element = (Element) xmlDocument.selectSingleNode(XPATH);
System.out.println("根据XPATH获取结点内容:" + element.getText());
System.out.println("---------------所有查找---------------");
//赋值XPATH语句
XPATH = "//d";
List<Element> list = xmlDocument.selectNodes(XPATH);
for(Element e : list){
System.out.println("根据XPATH获取结点内容:" + e.getText());
}
}
}
write.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<Store>
<a>
<b>
<c>
<d>我在这儿~</d>
</c>
<d>我在那儿~</d>
</b>
<d>我在天上~</d>
</a>
<d>我在地下~</d>
</Store>