使用JDom来处理XML配置文件
本文主要介绍使用JDom来解析XML文件
以下示例一共有四个类:类 Student,类 Teacher,类 JdbcInfo,类 ConfigurationUtils。
和一个配置文件:config.xml.
类 Student:封装了sid,sname 的get和set 方法。
类 Teacher:封装了tid,tname 的get和set 方法。
类 JdbcInfo:封装了driverName,url,username,password 的get和set 方法。
类 ConfigurationUtils:主要是使用JDom来读取config.xml的数据库配置文件信息,并实例化Student和Teacher。
文件 config.xml:里面配置了数据库的访问信息,还有Student和Teacher的持久化bean配置信息。
具体如下:
文件 config.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<Oracle-Info>
<driver-name>oracle.jdbc.driver.OracleDriver</driver-name>
<url>jdbc:oracle:thin:@192.168.1.100:1521:test</url>
<username>test</username>
<password>test</password>
</Oracle-Info>
<beans-Info>
<bean id="student" class="beanInfo.Student"/>
<bean id="teacher" class="beanInfo.Teacher"/>
</beans-Info>
</configuration>
类 Student
package beanInfo;
public class Student implements java.io.Serializable {
// Fields
private String sid;
private String sname;
// Constructors
/** default constructor */
public Student() {
System.out.println("类 Student 实例化");
}
/** minimal constructor */
public Student(String sid) {
this.sid = sid;
}
/** full constructor */
public Student(String sid, String sname) {
this.sid = sid;
this.sname = sname;
}
// Property accessors
public String getSid() {
return this.sid;
}
public void setSid(String sid) {
this.sid = sid;
}
public String getSname() {
return this.sname;
}
public void setSname(String sname) {
this.sname = sname;
}
}
类 Teacher
package beanInfo;
public class Teacher implements java.io.Serializable {
// Fields
private String tid;
private String tname;
// Constructors
/** default constructor */
public Teacher() {
System.out.println("类 Teacher 实例化");
}
/** minimal constructor */
public Teacher(String tid) {
this.tid = tid;
}
/** full constructor */
public Teacher(String tid, String tname) {
this.tid = tid;
this.tname = tname;
}
// Property accessors
public String getTid() {
return this.tid;
}
public void setTid(String tid) {
this.tid = tid;
}
public String getTname() {
return this.tname;
}
public void setTname(String tname) {
this.tname = tname;
}
}
类 JdbcInfo
package mapping;
public class JdbcInfo {
private String driverName;
private String url;
private String username;
private String password;
public String getDriverName() {
return driverName;
}
public void setDriverName(String driverName) {
this.driverName = driverName;
}
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;
}
}
类 ConfigurationUtils
package mapping;
public class ConfigurationUtils {
private static ConfigurationUtils configuration = new ConfigurationUtils();
private static final String CONFIG_FILE_NAME ="config.xml";
private Element rootElt;
private JdbcInfo jdbcInfo = new JdbcInfo();
private Map beanMap = new HashMap();
private ConfigurationUtils(){
SAXBuilder sb = new SAXBuilder();
try {
Document doc = sb.build(Thread.currentThread().getContextClassLoader().getResourceAsStream(CONFIG_FILE_NAME));
this.rootElt = doc.getRootElement();
initjdbcInfo();
initBeans();
} catch (JDOMException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
private void initjdbcInfo(){
try {
Element driverName = (Element) XPath.selectSingleNode(rootElt, "//configuration/Oracle-Info/driver-name");
jdbcInfo.setDriverName(driverName.getText());
Element url = (Element) XPath.selectSingleNode(rootElt, "//configuration/Oracle-Info/url");
jdbcInfo.setDriverName(url.getText());
Element username = (Element) XPath.selectSingleNode(rootElt, "//configuration/Oracle-Info/username");
jdbcInfo.setDriverName(username.getText());
Element password = (Element) XPath.selectSingleNode(rootElt, "//configuration/Oracle-Info/password");
jdbcInfo.setDriverName(password.getText());
} catch (JDOMException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
private void initBeans(){
try {
List list = XPath.selectNodes(rootElt, "//configuration/beans-Info/bean");
for(Iterator it = list.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) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InstantiationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static ConfigurationUtils getConfiguration(){
return configuration;
}
public JdbcInfo getjdbcInfo() {
return jdbcInfo;
}
public Object getBean(Class c){
return beanMap.get(c.getName());
}
调用如下:
public static void main(String[] args) {
String driverName = ConfigurationUtils.getConfiguration().getjdbcInfo().getDriverName();
String url = ConfigurationUtils.getConfiguration().getjdbcInfo().getUrl();
String username = ConfigurationUtils.getConfiguration().getjdbcInfo().getUsername();
String password = ConfigurationUtils.getConfiguration().getjdbcInfo().getPassword();
Student student = (Student)ConfigurationUtils.getConfiguration().getBean(Student.class);
Teacher teacher = (Teacher)ConfigurationUtils.getConfiguration().getBean(Student.class);
}
}
分享到:
相关推荐
* fileName文件的路徑和名稱 * firstChild為xml第一個節點 * */ public Element ReaderXml(String fileName,String firstChild){ Element element=null; try{ File xmlFile = new File(fileName); ...
dom4j是一个Java的XML API,是jdom的升级品,用来读写XML文件的。dom4j是一个十分优秀的JavaXML API,具有性能优异、功能强大和极其易使用的特点,它的...这已经是必须使用的jar包, Hibernate也用它来读写配置文件。
第一个是org.jdom包,它包括表示XML文档以及 其组件的类。下一个是org.jdom.input包,它包括用于构建XML文档的类。其中最主要和最重要的类是SAXBuilder。org.jdom.output包中包括输出XML文档的一些类。其中最重要的...
DWR.xml配置文件说明书 1、 建立dwr.xml 配置文件 任何一个dwr.xml的文件都需要包含DWR DOCTYPE的声明行,格式如下: <!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 1.0//EN" ...
将两个XML文件部分内容读出写入EXCEL,使用JDOM和JXL实现,需要自己加入JDOM和JXL
java解析xml四种方式 DOM (Document Object Model, 即文档对象模型) 是 W3C 组织推荐的处理 XML 的标准接口, DOM采用建立树形...目前许多开源项目中大量采用DOM4J,例如大名鼎鼎的Hibernate也用DOM4J来读取XML配置文件.
a) 可用用来做为软件系统的配置文件。 b) 可用来跨平台、跨语言交换数据。 2. 掌握xml的解析技术(jdom、dom4j)? 常用技术: 标准Dom、JDom(为Java提供的解析技术)、Dom4j(优化之后的解析技术)、SAX(大型...
它将教您如何使用XML的各种应用程序编程接口(API)、工具和技巧来构建实际的应用程序,为管理从配置文件到网络站点在内的所有信息提供一条全新的途径。 本书的前两章回顾有关XML的基础知识,包括XPath、XSL、DTD...
它将教您如何使用XML的各种应用程序编程接口(API)、工具和技巧来构建实际的应用程序,为管理从配置文件到网络站点在内的所有信息提供一条全新的途径。 本书的前两章回顾有关XML的基础知识,包括XPath、XSL、DTD以及...
dom4j是一个Java的XML API,类似于jdom,用来读写XML文件的。dom4j是一个非常非常优秀的Java XML API,具有性能优异、功能强大和极端易用使用的特点,同时它也...这是必须使用的jar包, Hibernate用它来读写配置文件。
dom4j是一个Java的XML API,是jdom的升级品,用来读写XML文件的。dom4j是一个十分优秀的JavaXML API,具有性能优异、功能强大和极其易使用的特点,它的...这已经是必须使用的jar包, Hibernate也用它来读写配置文件。
5,充当配置文件 格式良好的XML文件的规范 XML文档是一种严格规范的语言,必须按照规范来写。 XML文档的框架结构 XML文档=序言+元素+杂项(可选) 1)序言 序言=(XML声明)+(杂项)+(文档类型声明) XML...
目前许多开源项目中大量采用DOM4J,例如大名鼎鼎的Hibernate也用DOM4J来读取XML配置文件。如果不考虑可移植性,那就采用DOM4J. 2:JDOM 和DOM在性能测试时表现不佳,在测试10M文档时内存溢出。在小文档情况下还...
dom4j是一个Java的XML API,是jdom的升级品,用来读写XML文件的。dom4j是一个十分优秀的JavaXML API,具有性能优异、功能强大和极其易使用的特点,它的...这已经是必须使用的jar包, Hibernate也用它来读写配置文件。
dom4j是一个Java的XML API,类似于jdom,用来读写XML文件的。dom4j是一个非常非常优秀的Java XML API,具有性能优异、功能强大和极端易用使用的特点,同时它也...这是必须使用的jar包, Hibernate用它来读写配置文件。
dom4j是一个Java的XML API,类似于jdom,用来读写XML文件的。dom4j是一个非常非常优秀的Java XML API,具有性能优异、功能强大和极端易用使用的特点,同时它也...这是必须使用的jar包, Hibernate用它来读写配置文件。
dom4j是一个Java的XML API,类似于jdom,用来读写XML文件的。dom4j是一个非常非常优秀的Java XML API,具有性能优异、功能强大和极端易用使用的特点,同时它也...这是必须使用的jar包, Hibernate用它来读写配置文件。
dom4j是一个Java的XML API,类似于jdom,用来读写XML文件的。dom4j是一个非常非常优秀的Java XML API,具有性能优异、功能强大和极端易用使用的特点,同时它也...这是必须使用的jar包, Hibernate用它来读写配置文件。
dom4j是一个Java的XML API,类似于jdom,用来读写XML文件的。dom4j是一个非常非常优秀的Java XML API,具有性能优异、功能强大和极端易用使用的特点,同时它也...这是必须使用的jar包, Hibernate用它来读写配置文件。
dom4j是一个Java的XML API,类似于jdom,用来读写XML文件的。dom4j是一个十分优秀的JavaXML API,具有性能优异、功能强大和极其易使用的特点,同时它也是...这已经是必须使用的jar包, Hibernate也用它来读写配置文件。