dom4j + xpath解析dbInformation.xml文件

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>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值