解析XML,得到property标签中的name属性及value属性

SqlMapXML文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC" />
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://127.0.0.1:3306/testdb?characterEncoding=utf8&amp;useSSL=false&amp;serverTimezone=GMT&amp;allowPublicKeyRetrieval=false&amp;useUnicode=true" />
                <property name="username" value="sa" />
                <property name="password" value="admin" />
            </dataSource>
        </environment>
    </environments>

    <mappers>
        <mapper resource="UserMapper.xml" />
    </mappers>
</configuration>

第一步:

  • dom4j-1.6.1.jar
  • jaxen-1.2.0.jar

第二步:

 public static void main(String[] args) throws Exception{
        SAXReader saxReader=new SAXReader();
        InputStream inputStream = Resources.getResourceAsStream("SqlMapConfig.xml");
        Document document= saxReader.read(inputStream);
        Element rootElement = document.getRootElement();
        List<Element> list = rootElement.selectNodes("//property");
        for(Element element:list){
            String name = element.attributeValue("name");
            String value = element.attributeValue("value");
            System.out.println(name+":"+value);
        }
    }

效果:

将解析出来的配置信息封装成对象

Configuration类

public class Configuration {
    private String driver;
    private String url;
    private String username;
    private String password;

    @Override
    public String toString() {
        return "Configuration{" +
                "driver='" + driver + '\'' +
                ", url='" + url + '\'' +
                ", username='" + username + '\'' +
                ", password='" + password + '\'' +
                '}';
    }

    public String getDriver() {
        return driver;
    }

    public void setDriver(String driver) {
        this.driver = driver;
    }

    public String getUrl() {
        return url;
    }

    public void setUrl(String url) {
        this.url = url;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }
}

XmlConfigBuilder.java

public class XmlConfigBuilder {
    public static Configuration loadXmlConfig(InputStream inputStream){
        Configuration configuration=new Configuration();
        try {
            SAXReader saxReader=new SAXReader();
            Document document = saxReader.read(inputStream);
            Element rootElement = document.getRootElement();
            List<Element> list = rootElement.selectNodes("//property");
            for(Element element:list){
                String name = element.attributeValue("name");
                String value = element.attributeValue("value");
                if("driver".equalsIgnoreCase(name)){
                    configuration.setDriver(value);
                }
                if("url".equalsIgnoreCase(name)){
                    configuration.setUrl(value);
                }
                if("username".equalsIgnoreCase(name)){
                    configuration.setUsername(value);
                }
                if("password".equalsIgnoreCase(name)){
                    configuration.setPassword(value);
                }
            }
        } catch (DocumentException e) {
            e.printStackTrace();
        }
        return configuration;
    }
}

 

 posted on 2019-07-23 20:12  会飞的金鱼  阅读(267)  评论(0)    收藏  举报