package com.baidu;
import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import java.io.File;
import java.net.URISyntaxException;
import java.util.List;
//使用dom4j解析xml文件
public class Test02 {
public static void main(String[] args) {
//使用dom4j第一步:将dom4j的jar包添加到classpath中(使用maven的话,只需在pom.xml文件中配置即可)
//1.创建SAXReader对象
SAXReader saxReader = new SAXReader();
try {
//2.提供需要读取的文件路径
String path = Thread.currentThread().getContextClassLoader().getResource("XML/db.xml").toURI().getPath();
//3.读取xml文件(通过saxReader的read方法),形成DOM树
Document dom = saxReader.read(new File(path));
//4.获取dom树的根节点
Element rootElement = dom.getRootElement();
//5.获取根节点的名字,输出查看效果
String rootElementName = rootElement.getName();
System.out.println("rootElementName = " + rootElementName);
//6.获取根节点的属性
List<Element> attributes = rootElement.attributes();
System.out.println("属性的个数有" + attributes.size());
//7.获取根节点的属性值
for (int i = 0; i < attributes.size(); i++) {
Attribute attribute = (Attribute) attributes.get(i);
System.out.println(attribute.getName() +"="+ attribute.getValue());
}
//8.其他获取属性的方法
/*String name = rootElement.attributeValue("name");
System.out.println("name = " + name);
String id = rootElement.attributeValue("id");
System.out.println("id = " + id);*/
//9.获取根节点的子节点的名字和值
List<Element> elements = rootElement.elements();
for (int i = 0; i < elements.size(); i++) {
List<Element> list = elements.get(i).elements();
for (int j = 0; j < list.size(); j++) {
Element element = list.get(j);
String name = element.getName();
Object data = element.getData();
System.out.println(name +"="+ data);
}
}
//10.其他方法获取根节点的子节点的名字和值
String driver = (String) rootElement.element("property").element("driver").getData();
String url = (String) rootElement.element("property").element("url").getData();
String user = (String) rootElement.element("property").element("user").getData();
String pass = (String) rootElement.element("property").element("pass").getData();
//11.输出查看效果
System.out.println("driver = " + driver);
System.out.println("url = " + url);
System.out.println("user = " + user);
System.out.println("pass = " + pass);
} catch (URISyntaxException e) {
System.out.println("toURI()方法异常!");
} catch (DocumentException e) {
System.out.println("IO异常!");
}
}
}
<?xml version="1.0" encoding="UTF-8"?>
<properties id="jdbc" name="jdbc">
<property name="mysql">
<driver>com.mysql.cj.jdbc.Driver</driver>
<url>jdbc:mysql://localhost:3306/mydb?characterEncoding=utf8&useSSL=false&serverTimezone=UTC</url>
<user>root</user>
<pass>root</pass>
</property>
<property name="druid">
<initialSize>10</initialSize>
<minIdle>10</minIdle>
<maxActive>20</maxActive>
<maxWait>6000</maxWait>
</property>
</properties>