package com.baidu;
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;
// dom4j + xpath解析dbInformation.xml文件。
public class Test05 {
public static void main(String[] args) {
//1.创建SAXReader对象
SAXReader saxReader = new SAXReader();
try {
//2.提供需要读取的文件的路径
String path = Thread.currentThread().getContextClassLoader().getResource("XML/dbInformation.xml").toURI().getPath();
//3.调用read方法读取文件
Document document = saxReader.read(new File(path));
//4.通过 path 获取节点,根据不同的db-type,选择登录mysql还是oracle账户
String xpath = "/db-info/db-type";
//5.通过 selectSingleNode 方法获取一个节点(需要强制类型转换)
Element element = (Element) document.selectSingleNode(xpath);
//6.获取db-type的值
String dbType = element.getText();
//7.通过 path 获取节点, 通过db-type取得对象数据库的db节点
String dbPath = "/db-info/db[@name='" + dbType +"']";
//8.通过 selectSingleNode 方法获取一个节点(需要强制类型转换),获取对应的db节点
Element dbElement = (Element) document.selectSingleNode(dbPath);
//9.通过节点名获取节点的值
String driver = dbElement.elementText("driver");
String url = dbElement.elementText("url");
String user = dbElement.elementText("user");
String pass = dbElement.elementText("pass");
//10.打印输出查看效果
System.out.println("driver = " + driver);
System.out.println("url = " + url);
System.out.println("user = " + user);
System.out.println("pass = " + pass);
//11.控制台输出的结果为
/*
driver = com.mysql.jdbc.Driver
url = jdbc:mysql://localhost:3306/test
user = root
pass = root
*/
} catch (URISyntaxException e) {
System.out.println("文件路径不正确,文件读取失败!");
} catch (DocumentException e) {
System.out.println("IO异常,文件读取失败!");
}
}
}
<?xml version="1.0" encoding="UTF-8"?>
<db-info>
<db-type>mysql</db-type>
<db name="oracle">
<driver>oracle.jdbc.driver.OracleDriver</driver>
<url>jdbc:oracle:thin:@localhost:1521:mydb</url>
<user>scott</user>
<pass>tiger</pass>
</db>
<db name="mysql">
<driver>com.mysql.jdbc.Driver</driver>
<url>jdbc:mysql://localhost:3306/test</url>
<user>root</user>
<pass>root</pass>
</db>
</db-info>