`
ZOODragon
  • 浏览: 68174 次
  • 性别: Icon_minigender_1
  • 来自: 大连
文章分类
社区版块
存档分类
最新评论

使用JDom来处理XML配置文件

阅读更多

使用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);
 }

}

 

0
0
分享到:
评论
1 楼 zoushasha 2010-01-08  
讲的不够详细,太简单了,请小刘详细讲解下如何解析xml内容和路径,给个例子最好。

相关推荐

    Web.xml文件配置JDOM對XML文件操作

    * 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文件的。下载地址 .txt

    dom4j是一个Java的XML API,是jdom的升级品,用来读写XML文件的。dom4j是一个十分优秀的JavaXML API,具有性能优异、功能强大和极其易使用的特点,它的...这已经是必须使用的jar包, Hibernate也用它来读写配置文件。

    Oracle开发人员JDOM和XML分析生成文档

    第一个是org.jdom包,它包括表示XML文档以及 其组件的类。下一个是org.jdom.input包,它包括用于构建XML文档的类。其中最主要和最重要的类是SAXBuilder。org.jdom.output包中包括输出XML文档的一些类。其中最重要的...

    DWR.xml配置文件说明书(含源码)

    DWR.xml配置文件说明书 1、 建立dwr.xml 配置文件 任何一个dwr.xml的文件都需要包含DWR DOCTYPE的声明行,格式如下: &lt;!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 1.0//EN" ...

    将两个XML文件部分内容读出写入EXCEL

    将两个XML文件部分内容读出写入EXCEL,使用JDOM和JXL实现,需要自己加入JDOM和JXL

    XML解析教程

    java解析xml四种方式 DOM (Document Object Model, 即文档对象模型) 是 W3C 组织推荐的处理 XML 的标准接口, DOM采用建立树形...目前许多开源项目中大量采用DOM4J,例如大名鼎鼎的Hibernate也用DOM4J来读取XML配置文件.

    解析xml中的java包

    a) 可用用来做为软件系统的配置文件。 b) 可用来跨平台、跨语言交换数据。 2. 掌握xml的解析技术(jdom、dom4j)? 常用技术: 标准Dom、JDom(为Java提供的解析技术)、Dom4j(优化之后的解析技术)、SAX(大型...

    Java and XML, 3rd Edition

    它将教您如何使用XML的各种应用程序编程接口(API)、工具和技巧来构建实际的应用程序,为管理从配置文件到网络站点在内的所有信息提供一条全新的途径。 本书的前两章回顾有关XML的基础知识,包括XPath、XSL、DTD...

    JAVA与XML.rar

    它将教您如何使用XML的各种应用程序编程接口(API)、工具和技巧来构建实际的应用程序,为管理从配置文件到网络站点在内的所有信息提供一条全新的途径。 本书的前两章回顾有关XML的基础知识,包括XPath、XSL、DTD以及...

    xml解析器-dom4j的支持包_ 教程

    dom4j是一个Java的XML API,类似于jdom,用来读写XML文件的。dom4j是一个非常非常优秀的Java XML API,具有性能优异、功能强大和极端易用使用的特点,同时它也...这是必须使用的jar包, Hibernate用它来读写配置文件。

    dom4j-XML解析.zip

    dom4j是一个Java的XML API,是jdom的升级品,用来读写XML文件的。dom4j是一个十分优秀的JavaXML API,具有性能优异、功能强大和极其易使用的特点,它的...这已经是必须使用的jar包, Hibernate也用它来读写配置文件。

    xml入门教程/xml入门教程

    5,充当配置文件 格式良好的XML文件的规范 XML文档是一种严格规范的语言,必须按照规范来写。 XML文档的框架结构 XML文档=序言+元素+杂项(可选) 1)序言 序言=(XML声明)+(杂项)+(文档类型声明) XML...

    java xml 增删改查

    目前许多开源项目中大量采用DOM4J,例如大名鼎鼎的Hibernate也用DOM4J来读取XML配置文件。如果不考虑可移植性,那就采用DOM4J. 2:JDOM 和DOM在性能测试时表现不佳,在测试10M文档时内存溢出。在小文档情况下还...

    dom4j-1.6.1 xml开发利器

    dom4j是一个Java的XML API,是jdom的升级品,用来读写XML文件的。dom4j是一个十分优秀的JavaXML API,具有性能优异、功能强大和极其易使用的特点,它的...这已经是必须使用的jar包, Hibernate也用它来读写配置文件。

    dom4j-1.6.1.jar和jaxen-1.1-beta-7.jar

    dom4j是一个Java的XML API,类似于jdom,用来读写XML文件的。dom4j是一个非常非常优秀的Java XML API,具有性能优异、功能强大和极端易用使用的特点,同时它也...这是必须使用的jar包, Hibernate用它来读写配置文件。

    dom4j-jar包下载

    dom4j是一个Java的XML API,类似于jdom,用来读写XML文件的。dom4j是一个非常非常优秀的Java XML API,具有性能优异、功能强大和极端易用使用的特点,同时它也...这是必须使用的jar包, Hibernate用它来读写配置文件。

    dom4j-1.5.jar

    dom4j是一个Java的XML API,类似于jdom,用来读写XML文件的。dom4j是一个非常非常优秀的Java XML API,具有性能优异、功能强大和极端易用使用的特点,同时它也...这是必须使用的jar包, Hibernate用它来读写配置文件。

    dom4j-2.0.0-ALPHA.rar

    dom4j是一个Java的XML API,类似于jdom,用来读写XML文件的。dom4j是一个非常非常优秀的Java XML API,具有性能优异、功能强大和极端易用使用的特点,同时它也...这是必须使用的jar包, Hibernate用它来读写配置文件。

    dom4j-1.6.1

    dom4j是一个Java的XML API,类似于jdom,用来读写XML文件的。dom4j是一个非常非常优秀的Java XML API,具有性能优异、功能强大和极端易用使用的特点,同时它也...这是必须使用的jar包, Hibernate用它来读写配置文件。

    dom4j-2.0.0-RC1包含jar包全部源码及文档.rar

    dom4j是一个Java的XML API,类似于jdom,用来读写XML文件的。dom4j是一个十分优秀的JavaXML API,具有性能优异、功能强大和极其易使用的特点,同时它也是...这已经是必须使用的jar包, Hibernate也用它来读写配置文件。

Global site tag (gtag.js) - Google Analytics