解析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&useSSL=false&serverTimezone=GMT&allowPublicKeyRetrieval=false&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
浙公网安备 33010602011771号