目录
使用dom4j解析xml文件流程
例如,解析mysql配置文件sqlConfig.xml
<configuration><!--xml根标签-->
<dataSource>
<property name="driverClass" value="com.mysql.jdbc.Driver"/>
<property name="jdbcUrl" value="jdbc:mysql://localhost:3306/my_test_new"/>
<property name="user" value="root"/>
<property name="password" value="root"/>
</dataSource>
<mapper resource="UserMapper.xml"/>
</configuration>
1、依赖dom4j包
<dependency>
<groupId>dom4j</groupId>
<artifactId>dom4j</artifactId>
<version>1.6.1</version>
</dependency>
<dependency>
<groupId>jaxen</groupId>
<artifactId>jaxen</artifactId>
<version>1.1.6</version>
</dependency>
2、 读取xml文件获取到文件输入流
InputStream resourceAsStream =
BeanFactory.class.getClassLoader().getResourceAsStream("sqlConfig.xml");
3、使用dom4j解析输入流得到document
Document document = new SAXReader().read(resourceAsStream);
4、获取document标签元素并封装
//1、获取根标签
Element rootElement = document.getRootElement();
//2、获取连接数据属性标签
List<Element> propertyElements = rootElement.selectNodes("//property");
Properties properties = new Properties();
for (Element propertyElement : propertyElements) {
//3、获取标签的属性值
String name = propertyElement.attributeValue("name");
String value = propertyElement.attributeValue("value");
properties.setProperty(name, value);
}
扩展:XPath
XPath | 解释 | 例子 |
nodename | 选取当前节点的所有名为nodename的子节点 |
//获取 |
/ | 从根节点选取 |
//获取根节点所有名为select的子节点 |
// | 匹配任意位置的节点 |
//获取xml文件中任意名为select的节点 |
. | 获取当前节点 |
//返回的值list.get(0) 与 testElement 一致 |
.. | 获取当前节点的父节点 |
//等价于 |
@ | 获取当前节点的属性值 |
//等价于 |