1、導包
2、創建sys-config.xml
<?xml version="1.0" encoding="UTF-8"?> <config> <database-info> <driver-name>com.mysql.jdbc.Driver</driver-name> <url>jdbc:mysql://localhost:3306/sys?serverTimezone=GMT%2B8</url> <user>root</user> <password>123</password> </database-info> </config>
3、dom4j+Xpath的簡單路徑表達式獲取節點元素內容和屬性值
package com.zda.xml; import org.dom4j.Attribute; import org.dom4j.Document; import org.dom4j.Element; import org.dom4j.io.SAXReader; public class SysConfigParser { /** * @param args */ public static void main(String[] args) { try { //創建解析器 SAXReader reader = new SAXReader(); //通過解析器的read方法將配置文件讀取到內存中,生成一個Dcoumente【org.dom4j】對象樹 Document document = reader.read("conf/sys-config.xml"); //driver-name節點元素的路徑:config -> database-info -> driver-name // driver-name節點元素的xpath路徑:/config/database-info/driver-name Element driverNameElt = (Element) document.selectSingleNode("/config/database-info/driver-name"); //獲取driverNameElt節點元素對象的文本內容 String driverName = driverNameElt.getStringValue(); System.out.println(driverName); //url節點元素的路徑: config -> database-info -> url //url節點元素的xpath路徑: /config/database-info/url //url節點元素的xpath路徑: config//url //url節點元素的xpath路徑: //url Element urlElt = (Element) document.selectSingleNode("/config//url"); String url = urlElt.getStringValue(); System.out.println(url); //user節點元素的路徑:config -> database-info -> user //user節點元素的xpath路徑:/config/database-info/user //user節點元素的xpath路徑:config//user //user節點元素的xpath路徑://user Element userElt = (Element) document.selectObject("//user"); String user = userElt.getText(); System.out.println(user); //獲取userElt節點元素對象的name屬性對象 Attribute portAttr = userElt.attribute("name"); //獲取portAttr節點name屬性對象的值,方法1 String port = portAttr.getStringValue(); System.out.println(port); //獲取portAttr節點name屬性對象的值,方法2 String portValue = userElt.attributeValue("name"); System.out.println(portValue); Element passwordElt = (Element) document.selectSingleNode("//password"); String password = passwordElt.getTextTrim(); System.out.println(password); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
輸出結果