使用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);
}
}
分享到:
相关推荐
XML(eXtensible Markup Language)是一种标记语言,广泛用于数据交换、配置文件以及文档存储等场景。在Java编程中,JDOM(Java Document Object Model)是处理XML的一种库,它提供了方便的方式来创建、修改和读取...
在Spring框架中,XML配置文件通常用于定义bean及其依赖关系。JDOM可以用于读取和解析这些配置文件。例如,一个Spring配置文件`spring-config.xml`可能包含如下内容: ```xml xmlns:xsi=...
* XML 配置文件解析 * 数据交换和 Integration * 文档管理和存储 JDOM 库是一个功能强大且灵活的 XML 解析库,能够满足各种 Java 项目的需求。 结语 本文详细介绍了如何使用 JDOM 库解析 XML 文件,并讨论了 JDOM...
XML(eXtensible Markup Language)是一种用于标记数据的语言,广泛应用于数据交换、配置文件、文档存储等场景。JDOM是Java中一个专门用来解析XML的库,它提供了方便的API来读取、修改和创建XML文档。在这个例子中,...
* fileName文件的路徑和名稱 * firstChild為xml第一個節點 * */ public Element ReaderXml(String fileName,String firstChild){ Element element=null; try{ File xmlFile = new File(fileName); ...
XML(Extensible Markup Language)是一种用于标记数据的语言,广泛应用于数据交换、配置文件和文档存储等领域。XML文档结构包含元素(Element)、属性(Attribute)、文本(Text)等组件。每个XML文档都有一个根...
下面将详细介绍如何使用JDOM来读取XML文件。 首先,我们需要了解XML的基本概念。XML(eXtensible Markup Language)是一种标记语言,用于存储和传输结构化数据。它的结构清晰,易于人和机器理解,广泛应用于网络...
在IT领域,XML(eXtensible Markup Language)是一种用于存储和传输数据的标准化格式,广泛应用在各种系统间的数据交换、配置文件以及文档结构化表示等场景。JDOM是Java中一个专门用来处理XML的库,它提供了一种高效...
**JDOM解析XML文件** XML(eXtensible Markup Language)是一种用于标记数据的语言,广泛应用于数据交换、配置文件和文档存储等领域。...无论是读取配置文件、解析服务响应还是构建复杂的XML结构,JDOM都能胜任。
JDOM的目标是为Java开发者提供一个高效且易于使用的接口来处理XML文档。相比于DOM(Document Object Model),JDOM在Java环境中更为轻量级,因为它无需依赖Java平台的额外组件,如SAX或DOM解析器。 **XML解析方式**...
接下来,我们将使用SAXBuilder来解析XML配置文件。SAX(Simple API for XML)是一种基于事件驱动的XML解析器,它逐行读取XML文件并触发相应的事件处理函数。SAXBuilder是JDOM库提供的一个类,可以将XML数据转换为...
JDOM是Java领域中一个专门用来解析XML的库,它提供了一种高效且易于使用的API来处理XML文档。在这个小实例中,我们将深入探讨如何使用JDOM解析XML文件。 首先,我们需要引入JDOM的依赖。在Java项目中,如果你使用的...
它的结构清晰,易于人和机器阅读,广泛应用于配置文件、数据交换和文档存储等领域。 在Java中,JDOM提供了两种主要的方式来解析XML文件:SAX(Simple API for XML)和DOM(Document Object Model)。SAX是事件驱动...
JDOM是Java中专门用来解析和操作XML的一个库,它提供了一种高效且方便的方式来处理XML文档。本实例将深入讲解如何使用JDOM进行XML解析。 首先,我们需要在项目中引入JDOM的类库。JDOM官方网站提供了不同版本的JDOM ...
XML(eXtensible Markup Language)是一种用于存储和传输数据的标记语言,它在IT领域中广泛应用于数据交换、配置文件等场景。JDOM是Java中专门用来处理XML文档的一个库,它提供了方便的API来创建、读取、修改和保存...
在实际开发中,JDOM常用于处理XML配置文件、数据交换格式等场景。结合Java的反射机制,JDOM还能帮助我们将XML数据映射到Java对象,实现数据的序列化和反序列化。 总结一下,JDOM是一个强大的XML解析库,它为Java...
总的来说,使用JDOM处理XML文件涉及到创建解析器,加载XML文件,获取和操作XML文档的元素及属性。通过这些步骤,我们可以方便地读取和解析XML数据,将其转化为Java对象,进行进一步的业务处理。对于开发者来说,掌握...
在Java中,读取XML配置文件可以使用多种方法,如DOM、SAX、JDOM等。其中,SAX(Simple API for XML)是一种基于事件驱动的XML解析器,它可以快速高效地读取XML文件。 二、SAX解析XML配置文件 在本文中,我们使用...
**正文** XML(eXtensible Markup Language)是一种标记语言,广泛用于数据交换、配置存储等领域。在Java中,有多种库可用于解析XML文档,其中...通过理解和掌握JDOM,你可以更高效地在Java项目中管理XML配置和数据。
XML(eXtensible Markup Language)是一种用于...无论你是要读取XML配置、解析XML数据还是生成XML报告,JDOM都是一个值得信赖的选择。通过熟练掌握JDOM,你可以更好地驾驭XML,为你的项目增添更多灵活性和可扩展性。