jdom XPath 解析配置文件(不錯(cuò)的設(shè)計(jì)思想)
Posted on 2009-07-29 00:02 Gavin.lee 閱讀(624) 評論(0) 編輯 收藏 所屬分類: xml doc 操作jdom xpath
今天的空,回味一下勇哥的視頻,敲了一段他的程序,感覺整個(gè)思想還是不錯(cuò)的。利用Xpath,雖然我一直在用dom4j,多少對jdom還是挺關(guān)注的。
PS:2009-8-8 17:24:15
之前這個(gè)測試程序還一直會(huì)有問題,
后來解決了,問題就是我沒用到最新JDOM包,這個(gè)問題,總是會(huì)讓人很郁悶。
<?xml version="1.0" encoding="UTF-8"?>
<sys-configure>
<jdbc-info>
<driver-class-name>net.sourceforge.jtds.jdbc.Driver</driver-class-name>
<url>jdbc:jtds:sqlserver://121.14.110.49:1433/wubai_wapcp</url>
<username>wap</username>
<password>esunxyz500wan!^wap</password>
</jdbc-info>
<!--N多的bean-->
<beans>
<bean id="com.Gavin.jdomXpath.Test1" class="com.Gavin.jdomXpath.Test1"></bean>
<bean id="com.Gavin.jdomXpath.Test2" class="com.Gavin.jdomXpath.Test2"></bean>
<bean id="com.Gavin.jdomXpath.Test3" class="com.Gavin.jdomXpath.Test3"></bean>
<bean id="com.Gavin.jdomXpath.Test4" class="com.Gavin.jdomXpath.Test4"></bean>
<bean id="com.Gavin.jdomXpath.Test5" class="com.Gavin.jdomXpath.Test5"></bean>
</beans>
</sys-configure>
package com.Gavin.jdomXpath;

import java.io.IOException;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import org.apache.log4j.Logger;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.input.SAXBuilder;
import org.jdom.xpath.XPath;


public class GlobalConfigure {

private static Logger logger = Logger.getLogger(GlobalConfigure.class);
private static GlobalConfigure instance = new GlobalConfigure();
private JdbcInfo jdbcInfo = new JdbcInfo();
private Map<String, Object> beanMap = new HashMap<String, Object>();
private static final String CONFIGE_FILE_NAME = "global_configure.xml";
private Element rootElt;
public static GlobalConfigure getInstance() {
return instance;
}
private GlobalConfigure() {
SAXBuilder sb = new SAXBuilder();
try {
Document doc = sb.build(Thread.currentThread().getContextClassLoader().getResourceAsStream(CONFIGE_FILE_NAME));
this.rootElt = doc.getRootElement();
initJdbcInfo();

initBeans();
} catch (JDOMException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public JdbcInfo getJdbcInfo() {
return jdbcInfo;
}
public Object getBean(Class c) {
return beanMap.get(c.getName());
}
private void initJdbcInfo() {
try {
Element driverClassNameElt = (Element)XPath.selectSingleNode(rootElt, "//sys-configure/jdbc-info/driver-class-name");
Element urlElt = (Element)XPath.selectSingleNode(rootElt, "//sys-configure/jdbc-info/url");
Element usernameElt = (Element)XPath.selectSingleNode(rootElt, "//sys-configure/jdbc-info/username");
Element passwordElt = (Element)XPath.selectSingleNode(rootElt, "//sys-configure/jdbc-info/password");
logger.debug(urlElt.getText());
jdbcInfo.setDriverClassName(driverClassNameElt.getText());
jdbcInfo.setUrl(urlElt.getText());
jdbcInfo.setUsername(usernameElt.getText());
jdbcInfo.setPassword(passwordElt.getText());
} catch (JDOMException e) {
e.printStackTrace();
}
}
private void initBeans() {
try {
List<Element> beanList = XPath.selectNodes(rootElt, "//sys-configure/beans/bean");
for(Iterator<Element> it = beanList.iterator(); it.hasNext();) {
Element beanElt = (Element)it.next();
String id = beanElt.getAttributeValue("id");
String className = beanElt.getAttributeValue("class");
Object obj = Class.forName(className).newInstance();
beanMap.put(id, obj);
}
} catch (JDOMException e) {
e.printStackTrace();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
GlobalConfigure.getInstance().getJdbcInfo().toString();
// Test1 t = (Test1)GlobalConfigure.getInstance().getBean(Test1.class);
System.out.println("uuu");

}
}

package com.Gavin.jdomXpath;

public class JdbcInfo {
private String driverClassName;
private String url;
private String username;
private String password;
public String getDriverClassName() {
return driverClassName;
}
public void setDriverClassName(String driverClassName) {
this.driverClassName = driverClassName;
}
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;
}
public String toString() {
return "JdbcInfo {driver-class-name:" + this.driverClassName
+ "url:" + this.url
+ "username:" + this.username
+ "password:" + this.password + "}";
}
}
今天的空,回味一下勇哥的視頻,敲了一段他的程序,感覺整個(gè)思想還是不錯(cuò)的。利用Xpath,雖然我一直在用dom4j,多少對jdom還是挺關(guān)注的。
PS:2009-8-8 17:24:15
之前這個(gè)測試程序還一直會(huì)有問題,
后來解決了,問題就是我沒用到最新JDOM包,這個(gè)問題,總是會(huì)讓人很郁悶。


































































































































































