Jdom读取xml文件
现在有一个名为global-configure.xml的配置文件,内容如下
<?xml version="1.0" encoding="UTF-8"?>
<sys-configure>
<jdbc-info>
<driver-class-name>oracle.jdbc.driver.OracleDriver</driver-class-name>
<url>jdbc:oracle:thin:@127.0.0.1:1521:yqs</url>
<user-name>root</user-name>
<password>yqsshr</password>
</jdbc-info>
<beans>
<bean id="com.yqs.drp.basedata.dao.ItemDao" class="com.yqs.bbs.basedata.dao.ItemDao.ClassName" />
<bean id="com.yqs.bbs.basedata.dao.FlowCardDao" class="com.yqs.bbs.basedata.dao.FlowCardDao.ClassName" />
<!-- 可把所有的Dao配置进来 -->
</beans>
</sys-configure>
<sys-configure>
<jdbc-info>
<driver-class-name>oracle.jdbc.driver.OracleDriver</driver-class-name>
<url>jdbc:oracle:thin:@127.0.0.1:1521:yqs</url>
<user-name>root</user-name>
<password>yqsshr</password>
</jdbc-info>
<beans>
<bean id="com.yqs.drp.basedata.dao.ItemDao" class="com.yqs.bbs.basedata.dao.ItemDao.ClassName" />
<bean id="com.yqs.bbs.basedata.dao.FlowCardDao" class="com.yqs.bbs.basedata.dao.FlowCardDao.ClassName" />
<!-- 可把所有的Dao配置进来 -->
</beans>
</sys-configure>
现在要用Jdom读取其中的driver-class-name、url、user-name、password四个元素的内容,并将它放到JdbcInfo.java这个JavaBean中。
首先,先建立一个web工程,将Jdom(需要自己下载)文件夹下的lib下的所有jar包以及build下的jdom.jar包拷贝到WEB-INF下的lib文件夹下。
建立GlobalConfigure.java文件,内容如下:
import java.io.IOException;
import org.jdom.Document;
import org.jdom.JDOMException;
import org.jdom.input.SAXBuilder;
import org.jdom.Element;
import org.jdom.xpath.*;
import org.jdom.JDOMException;
import org.jdom.input.SAXBuilder;
import org.jdom.Element;
import org.jdom.xpath.*;
public class GlobalConfigure {
//采用单例模式,因为只需读取配置文件一次即可
private static GlobalConfigure instance = new GlobalConfigure();
private static final String CONFIG_FILE_NAME = "gobal-configure.xml";
private Element rootElt;
private JdbcInfo jdbcInfo = new JdbcInfo(); //JavaBean对象
private GlobalConfigure() {
SAXBuilder sb = new SAXBuilder();
try {
Document doc = sb.build(Thread.currentThread().getContextClassLoader().getResourceAsStream(CONFIG_FILE_NAME)); //读取文件
private static GlobalConfigure instance = new GlobalConfigure();
private static final String CONFIG_FILE_NAME = "gobal-configure.xml";
private Element rootElt;
private JdbcInfo jdbcInfo = new JdbcInfo(); //JavaBean对象
private GlobalConfigure() {
SAXBuilder sb = new SAXBuilder();
try {
Document doc = sb.build(Thread.currentThread().getContextClassLoader().getResourceAsStream(CONFIG_FILE_NAME)); //读取文件
this.rootElt = doc.getRootElement(); //取得根文件
initJdbcInfo();
} catch (JDOMException e) {
System.out.println("jdom error");
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
System.out.println("io error");
e.printStackTrace();
}
}
private static GlobalConfigure getInstance() {
return instance;
}
private void initJdbcInfo() {
try {
initJdbcInfo();
} catch (JDOMException e) {
System.out.println("jdom error");
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
System.out.println("io error");
e.printStackTrace();
}
}
private static GlobalConfigure getInstance() {
return instance;
}
private void initJdbcInfo() {
try {
//取得driver-class-name、url、user-name、password四个元素的内容
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/user-name");
Element passwordElt = (Element)XPath.selectSingleNode(rootElt, "//sys-configure/jdbc-info/password");
//将内容放到JavaBean
jdbcInfo.setDriverClassName(driverClassNameElt.getText());
jdbcInfo.setUrl(urlElt.getText());
jdbcInfo.setPassword(passwordElt.getText());
jdbcInfo.setUserName(userNameElt.getText());
//System.out.println(driverClassNameElt.getText());
//System.out.println(urlElt.getText());
} catch (JDOMException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void main(String[] args) {
System.out.println(GlobalConfigure.getInstance()); //打印测试
}
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/user-name");
Element passwordElt = (Element)XPath.selectSingleNode(rootElt, "//sys-configure/jdbc-info/password");
//将内容放到JavaBean
jdbcInfo.setDriverClassName(driverClassNameElt.getText());
jdbcInfo.setUrl(urlElt.getText());
jdbcInfo.setPassword(passwordElt.getText());
jdbcInfo.setUserName(userNameElt.getText());
//System.out.println(driverClassNameElt.getText());
//System.out.println(urlElt.getText());
} catch (JDOMException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void main(String[] args) {
System.out.println(GlobalConfigure.getInstance()); //打印测试
}
public JdbcInfo getJdbcInfo() {
return jdbcInfo;
}
public String toString() {
return "driverClassName:" + jdbcInfo.getDriverClassName() +
"\nURL:" + jdbcInfo.getUrl() +
"\nusername:" + jdbcInfo.getUserName() +
"\npassword:" + jdbcInfo.getPassword();
}
return jdbcInfo;
}
public String toString() {
return "driverClassName:" + jdbcInfo.getDriverClassName() +
"\nURL:" + jdbcInfo.getUrl() +
"\nusername:" + jdbcInfo.getUserName() +
"\npassword:" + jdbcInfo.getPassword();
}
}
JdbcInfo代码如下:
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 getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
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;
}
}
程序运行结果如下:
driverClassName:oracle.jdbc.driver.OracleDriver
URL:jdbc:oracle:thin:@127.0.0.1:1521:yqs
username:root
password:yqsshr
URL:jdbc:oracle:thin:@127.0.0.1:1521:yqs
username:root
password:yqsshr
转载于:https://blog.51cto.com/yqsshr/146696