导入jar包:jaxen-1.1.6.jar
需求一:查询xml中所有name元素的值
person.xml:
<?xml version="1.0" encoding="UTF-8"?>
<person>
<p1 id1="aaa">
<name>zhangsan</name>
<age>300</age>
<sex>nv</sex>
</p1>
<p1>
<name>lisi</name>
<age>25</age>
</p1>
</person>
TestDom4j.java:
import java.util.List;
import org.dom4j.Document;
import org.dom4j.Node;
import org.dom4j.io.SAXReader;
public class TestDom4j {
public static void main(String[] args) throws Exception {
getNames();
}
private static void getNames() throws Exception{
//创建解析器
SAXReader saxReader = new SAXReader();
//得到document
Document document = saxReader.read("src/person.xml");
//得到所有name元素
List<Node> list = document.selectNodes("//name");
//遍历list
for(Node node:list){
//node是每一个name元素
String s = node.getText();
System.out.println(s);
}
}
}
运行结果:
需求二:获取第一个P1元素中name属性的值
TestDom4j.java:
import org.dom4j.Document;
import org.dom4j.Node;
import org.dom4j.io.SAXReader;
public class TestDom4j {
public static void main(String[] args) throws Exception {
getNames();
}
private static void getNames() throws Exception{
//创建解析器
SAXReader saxReader = new SAXReader();
//得到document
Document document = saxReader.read("src/person.xml");
//得到所有第一个p1下的name元素
Node name = document.selectSingleNode("//p1[@id1='aaaa']/name");
String s = name.getText();
System.out.println(s);
}
}
运行结果: