DOM4J是一个Java的XML API,类似于jdom,用来读写XML文件的。性能优异、功能强大、简单易用、开放源代码。它是目前最流行、最好用的XML解析工具,解析XML的速度最快。
(1)创建SAXReader:SAXReader reader = new SAXReader();
(2)创建文件输入流打开xml文件:InputStream in = new FileInputStream("XXX.xml“);
(3)通过reader和输入流读取xml文件到内存创建Document对象:Document dom = reader.read(in);
(4)获取根节点:Element root = dom.getRootElement();
(5)获取子节点列表:List<Element> childNodes = root.elements();
(6)遍历子节点:Element node = childNodes.get(i);
(7)读取节点信息:
1)节点属性值:node.attributeValue("属性名");
2)节点名:node.getName();
3)节点值:node.getValue();
4)子节点文本值:node.elementText(”子节点名“);
以上解说参照:
原文链接:https://blog.csdn.net/qq_41316200/article/details/124180737
添加依赖:
<!-- dom4j -->
<dependency>
<groupId>dom4j</groupId>
<artifactId>dom4j</artifactId>
<version>1.6.1</version>
</dependency>
</dependencies>
我的xml文件:
<?xml version="1.0" encoding="utf-8" ?>
<class>
<student rollno="西游记">
<作者>吴承恩</作者>
<人物一>猴子</人物一>
<人物二>唐僧</人物二>
<人物三>猪儿</人物三>
</student>
<student rollno="红楼梦">
<人物一>林黛玉</人物一>
<人物二>贾宝玉</人物二>
<人物三>鑫儿</人物三>
<marks>85</marks>
</student>
<student rollno="三国演义">
<人物一>张飞</人物一>
<人物二>关羽</人物二>
<人物三>刘备</人物三>
<marks>85</marks>
</student>
</class>
Test代码:
public static void main(String[] args) throws DocumentException {
//创建Reader对象
SAXReader re = new SAXReader();
File path = new File("src/main/resources/test.xml");
//加载xml 获取Document
Document document = re.read(path);
//获取节点
Element rootElement = document.getRootElement();
Iterator iterator = rootElement.elementIterator();
//遍历节点
while (iterator.hasNext()) {
Element stu = (Element) iterator.next();
//获取该节点的信息
System.out.println(stu.getName());
//将节点通过attributes方法 转换为List数组
List<Attribute> attributes = stu.attributes();
System.out.println("=====获取属性=====");
//打印属性
for (Attribute attribute:attributes){
System.out.println(attribute.getStringValue());
}
System.out.println("=====遍历子节点=====");
Iterator iterator1 = stu.elementIterator();
while (iterator1.hasNext()) {
Element stuChild = (Element) iterator1.next();
System.out.println("节点名:"+stuChild.getName()+"----节点值"+stuChild.getStringValue());
}
}
}