```
package run;
import org.dom4j.*; import org.dom4j.io.SAXReader; import org.junit.Test;
import java.util.List;
public class Demo {
//绝对路径: /根元素/子元素/子元素
@Test
public void retrieval1() throws Exception {
SAXReader saxReader = new SAXReader();
Document document = saxReader.read(Demo.class.getResourceAsStream("/app.xml"));
List<Node> nodes = document.selectNodes("/contactList/contact/name");
for (Node node : nodes) {
//Element element = (Element) node;
// System.out.println(element.getTextTrim());
System.out.println(((Element) node).getTextTrim());
}
}
//相对路径: ./子元素/子元素 (.代表了当前元素)
@Test
public void retrieval2() throws Exception {
SAXReader saxReader = new SAXReader();
Document document = saxReader.read(Demo.class.getResourceAsStream("/app.xml"));
Element root = document.getRootElement();
List<Node> nodes = root.selectNodes("/contact/name");
for (Node node : nodes) {
System.out.println(((Element) node).getTextTrim());
}
}
//全文搜索:
//元素 在全文找该元素
//元素1/元素2 在全文找元素1下面的一级元素2
//元素1//元素2 在全文找元素1下面的全部元素2
@Test
public void retrieval3() throws Exception {
SAXReader saxReader = new SAXReader();
Document document = saxReader.read(Demo.class.getResourceAsStream("/app.xml"));
// List<Node> nodes = document.selectNodes("//name");
// List<Node> nodes = document.selectNodes("//contact/name");
List<Node> nodes = document.selectNodes("//contact//name");
for (Node node : nodes) {
System.out.println(((Element) node).getTextTrim());
}
}
//属性搜索:
//@id 全文找id这个属性
//name[@id] 全文找带id的name对象
//name[@id=1] 全文找带id且id=1的name对象
@Test
public void retrieval4() throws Exception {
SAXReader saxReader = new SAXReader();
Document document = saxReader.read(Demo.class.getResourceAsStream("/app.xml"));
// List<Node> nodes = document.selectNodes("//@id");
// Node nodes = document.selectSingleNode("//name[@id]");
Node nodes = document.selectSingleNode("//contact[@id=1]");
System.out.println(((Element) nodes).getTextTrim());
}
}