`
ZOODragon
  • 浏览: 68700 次
  • 性别: 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内容和路径,给个例子最好。

相关推荐

    使用JDOM解析XML文件

    XML(eXtensible Markup Language)是一种标记语言,广泛用于数据交换、配置文件以及文档存储等场景。在Java编程中,JDOM(Java Document Object Model)是处理XML的一种库,它提供了方便的方式来创建、修改和读取...

    jdom学习读取xml文件.files

    在Spring框架中,XML配置文件通常用于定义bean及其依赖关系。JDOM可以用于读取和解析这些配置文件。例如,一个Spring配置文件`spring-config.xml`可能包含如下内容: ```xml xmlns:xsi=...

    java 使用JDOM解析xml文件.docx

    * XML 配置文件解析 * 数据交换和 Integration * 文档管理和存储 JDOM 库是一个功能强大且灵活的 XML 解析库,能够满足各种 Java 项目的需求。 结语 本文详细介绍了如何使用 JDOM 库解析 XML 文件,并讨论了 JDOM...

    用jdom解析xml文件

    XML(eXtensible Markup Language)是一种用于标记数据的语言,广泛应用于数据交换、配置文件、文档存储等场景。JDOM是Java中一个专门用来解析XML的库,它提供了方便的API来读取、修改和创建XML文档。在这个例子中,...

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

    * fileName文件的路徑和名稱 * firstChild為xml第一個節點 * */ public Element ReaderXml(String fileName,String firstChild){ Element element=null; try{ File xmlFile = new File(fileName); ...

    jdom处理xml例子

    XML(Extensible Markup Language)是一种用于标记数据的语言,广泛应用于数据交换、配置文件和文档存储等领域。XML文档结构包含元素(Element)、属性(Attribute)、文本(Text)等组件。每个XML文档都有一个根...

    java利用jdom读取xml文件

    下面将详细介绍如何使用JDOM来读取XML文件。 首先,我们需要了解XML的基本概念。XML(eXtensible Markup Language)是一种标记语言,用于存储和传输结构化数据。它的结构清晰,易于人和机器理解,广泛应用于网络...

    JDOM解析本地XML

    在IT领域,XML(eXtensible Markup Language)是一种用于存储和传输数据的标准化格式,广泛应用在各种系统间的数据交换、配置文件以及文档结构化表示等场景。JDOM是Java中一个专门用来处理XML的库,它提供了一种高效...

    jdom解析xml文件

    **JDOM解析XML文件** XML(eXtensible Markup Language)是一种用于标记数据的语言,广泛应用于数据交换、配置文件和文档存储等领域。...无论是读取配置文件、解析服务响应还是构建复杂的XML结构,JDOM都能胜任。

    jdom.jar xml解析

    JDOM的目标是为Java开发者提供一个高效且易于使用的接口来处理XML文档。相比于DOM(Document Object Model),JDOM在Java环境中更为轻量级,因为它无需依赖Java平台的额外组件,如SAX或DOM解析器。 **XML解析方式**...

    模拟spring的xml配置文件注入

    接下来,我们将使用SAXBuilder来解析XML配置文件。SAX(Simple API for XML)是一种基于事件驱动的XML解析器,它逐行读取XML文件并触发相应的事件处理函数。SAXBuilder是JDOM库提供的一个类,可以将XML数据转换为...

    jdom解析xml文件小实例

    JDOM是Java领域中一个专门用来解析XML的库,它提供了一种高效且易于使用的API来处理XML文档。在这个小实例中,我们将深入探讨如何使用JDOM解析XML文件。 首先,我们需要引入JDOM的依赖。在Java项目中,如果你使用的...

    java利用jdom解析xml文件

    它的结构清晰,易于人和机器阅读,广泛应用于配置文件、数据交换和文档存储等领域。 在Java中,JDOM提供了两种主要的方式来解析XML文件:SAX(Simple API for XML)和DOM(Document Object Model)。SAX是事件驱动...

    JDOM解析xml文档实例(自己编写,仅供参考)

    JDOM是Java中专门用来解析和操作XML的一个库,它提供了一种高效且方便的方式来处理XML文档。本实例将深入讲解如何使用JDOM进行XML解析。 首先,我们需要在项目中引入JDOM的类库。JDOM官方网站提供了不同版本的JDOM ...

    JDOM相关解析XML文件实例

    XML(eXtensible Markup Language)是一种用于存储和传输数据的标记语言,它在IT领域中广泛应用于数据交换、配置文件等场景。JDOM是Java中专门用来处理XML文档的一个库,它提供了方便的API来创建、读取、修改和保存...

    使用jdom解析XML

    在实际开发中,JDOM常用于处理XML配置文件、数据交换格式等场景。结合Java的反射机制,JDOM还能帮助我们将XML数据映射到Java对象,实现数据的序列化和反序列化。 总结一下,JDOM是一个强大的XML解析库,它为Java...

    java读取XML(JDOM)

    总的来说,使用JDOM处理XML文件涉及到创建解析器,加载XML文件,获取和操作XML文档的元素及属性。通过这些步骤,我们可以方便地读取和解析XML数据,将其转化为Java对象,进行进一步的业务处理。对于开发者来说,掌握...

    Java中XML配置文件的读取(sax).doc

    在Java中,读取XML配置文件可以使用多种方法,如DOM、SAX、JDOM等。其中,SAX(Simple API for XML)是一种基于事件驱动的XML解析器,它可以快速高效地读取XML文件。 二、SAX解析XML配置文件 在本文中,我们使用...

    Jdom架包的使用配置解析xml

    **正文** XML(eXtensible Markup Language)是一种标记语言,广泛用于数据交换、配置存储等领域。在Java中,有多种库可用于解析XML文档,其中...通过理解和掌握JDOM,你可以更高效地在Java项目中管理XML配置和数据。

    Jdom解析xml案例

    XML(eXtensible Markup Language)是一种用于...无论你是要读取XML配置、解析XML数据还是生成XML报告,JDOM都是一个值得信赖的选择。通过熟练掌握JDOM,你可以更好地驾驭XML,为你的项目增添更多灵活性和可扩展性。

Global site tag (gtag.js) - Google Analytics