xpath 作为xml的遍历工具,在自动测试中经常使用。同时我觉得也可以很好的应用于java项目的配置工作中,如数据库链接。当然java web项目有很多配置的方法。这里只是提出自定义一个配置xml文件,用xpath读取内容的方法,以供参考。
首先在项目根目录创建一个xml文件:db.xml 。我这里使用的mysql数据库
<?xml version="1.0" encoding="UTF-8"?>
<db>
<dburl>jdbc:mysql://127.0.0.1:3307/</dburl>
<dbdriver>com.mysql.jdbc.Driver</dbdriver>
<dbname>mydb</dbname>
<dbuser>root</dbuser>
<dbpsw></dbpsw>
</db>
创建一个java文件XMLload.java
public class XMLload {
private static Node doc;
private static XPath xpath;
public XMLload() {
// 创建Document对象
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
dbf.setValidating(false);
DocumentBuilder db = null;
try {
db = dbf.newDocumentBuilder();
} catch (ParserConfigurationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
File f = new File(XMLload.class.getResource("/db.xml").getFile()); //通过XMLload.class.getResource获取db.xml的绝对路径
doc = db.parse(f);
} catch (SAXException | IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// 创建XPath对象
XPathFactory factory = XPathFactory.newInstance();
xpath = factory.newXPath();
HashMap<String, String> dbsource(){
String driver = null;
String url = null;
String name = null;
String psw = null;
String user = null;
try {
driver = (String) xpath.evaluate("//dbdriver", doc, XPathConstants.STRING);
url = (String) xpath.evaluate("//dburl", doc, XPathConstants.STRING);
name = (String) xpath.evaluate("//dbname", doc, XPathConstants.STRING);
user = (String) xpath.evaluate("//dbuser", doc, XPathConstants.STRING);
psw = (String) xpath.evaluate("//dbpsw", doc, XPathConstants.STRING);
} catch (XPathExpressionException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
HashMap<String, String> map = new HashMap<String, String>();
map.put("dbdriver", driver);
map.put("dburl", url);
map.put("dbname", name);
map.put("dbuser", user);
map.put("dbpsw", psw);
return map;
}
}
这样在数据库设置文件中就可以通过xml文件来动态设置数据库链接。