J2EE实现XML文件的读取与导出(源码)

简介:

最近学习了XML的相关知识,深感其强大。

XML这个技术家族非常庞大。并且与其他技术密不可分。

是我们非常有必要掌握的知识,然后看了两个视频。把XML关于J2EE这方面做了系统的学习。

总结如下:

搭建环境:MyEclipse6.5

使用jar包jdom.jar

下面首先介绍XML文件读取:

首先在项目中找一个XML文件,我就以以下的XML配置文件为例。

新建一个全局配置文件:gobal-configure.xml

 

复制代码
<? xml version="1.0" encoding="UTF-8" ?>
<!--  配置数据库信息  -->
< sys-configure >
    
< jdbc-info >
        
< driver-class-name > com.mysql.jdbc.Driver </ driver-class-name >
        
< url > jdbc:mysql://localhost:3306/sy </ url >
        
< user-name > root </ user-name >
        
< password > **** </ password >
    
</ jdbc-info >
<!--  配置DAO  -->
    
< beans >
        
< bean  id ="com.sy.dao.ItemDao"  class ="com.sy.dao.impl.ItemDaoImpl" ></ bean >
    
</ beans >
</ sys-configure >
复制代码

 

 下面在com.sy.util包中添加JdbcInfo.java注入类

 

 

复制代码
package  com.sy.util;

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 getUrl() {
        
return  url;
    }
    
public   void  setUrl(String url) {
        
this .url  =  url;
    }
    
    
public  String getPassword() {
        
return  password;
    }
    
public   void  setPassword(String password) {
        
this .password  =  password;
    }
    
public  String toString() {
        
return   " JdbcInfo {driverClassName= " + driverClassName +
        
" ,url= " + url +
        
" ,userName= " + userName +
        
" ,password= " + password + " } " ;
    }
    
public  String getUserName() {
        
return  userName;
    }
    
public   void  setUserName(String userName) {
        
this .userName  =  userName;
    }

}
复制代码

 

下面是读取类:GlobalConfigure.java

 

复制代码
package  com.sy.util;

import  java.io.IOException;
import  java.util.HashMap;
import  java.util.Iterator;
import  java.util.List;
import  java.util.Map;

import  org.jdom.Document;
import  org.jdom.Element;
import  org.jdom.JDOMException;
import  org.jdom.input.SAXBuilder;
import  org.jdom.xpath.XPath;

import  com.sy.dao.ItemDao;

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();
    
    
private  Map beanMap = new  HashMap();
    
    
private  GlobalConfigure(){
        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   static  GlobalConfigure getInstance(){
        
        
return  instance;
    }
    
private   void  initJdbcInfo(){
        
try  {
            Element driverClassNameElt
= (Element)XPath.selectSingleNode(rootElt, " //sys-configure/jdbc-info/driver-class-name " );
            
// System.out.println(driverClassNameElt.getText());
            jdbcInfo.setDriverClassName(driverClassNameElt.getText());
            Element urlElt
= (Element)XPath.selectSingleNode(rootElt, " //sys-configure/jdbc-info/url " );
            jdbcInfo.setUrl(urlElt.getText());
            Element userNameElt
= (Element)XPath.selectSingleNode(rootElt, " //sys-configure/jdbc-info/user-name " );
            jdbcInfo.setUserName(userNameElt.getText());
            Element passwordElt
= (Element)XPath.selectSingleNode(rootElt, " //sys-configure/jdbc-info/password " );
            jdbcInfo.setPassword(passwordElt.getText());
            
        } 
catch  (JDOMException e) {
            
//  TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
    
private   void  initBeans(){
        
try  {
            List beanList
= XPath.selectNodes(rootElt,  " //sys-configure/beans/bean " );
            
for (Iterator iter = beanList.iterator();iter.hasNext();){
                Element beanElt
= (Element)iter.next();
                String id
= beanElt.getAttributeValue( " id " );
                String className
= beanElt.getAttributeValue( " class " );
                
// System.out.println("id="+id+",className="+className);
                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   void  main(String[] args){
        System.out.println(GlobalConfigure.getInstance().getJdbcInfo());
        ItemDao itemDao
= (ItemDao)GlobalConfigure.getInstance().getBean(ItemDao. class );
    }

    
public  JdbcInfo getJdbcInfo() {
        
return  jdbcInfo;
    }
    
public  Object getBean(Class c){
        
return  beanMap.get(c.getName());
        
    }
}
复制代码

这样就可以读取了。

 

 下面是XML文件的导出的类:

复制代码
package  com.sy.util;

import  java.io.FileNotFoundException;
import  java.io.FileOutputStream;
import  java.io.IOException;

import  org.jdom.Attribute;
import  org.jdom.Document;
import  org.jdom.Element;
import  org.jdom.output.XMLOutputter;

public   class  XMLWriter {
    
/**
     * <selects> 
     *         <select> 
     *             <id sid="5">1</id> 
     *             <name>河北省</name> 
     *         </select> 
     *         <select> 
     *             <id>2</id>
     *             <name>海南省</name> 
     *         </select> 
     * </selects>
     * 
@param  args
     
*/
    
public   static   void  main(String[] args) {
        Element rootElt 
=   new  Element( " selects " );
        Element selectElt 
=   new  Element( " select " );
        Element idElt 
=   new  Element( " id " );
        idElt.addContent(
" 1 " ); // 设定值
        idElt.setAttribute( new  Attribute( " sid " , " 5 " ));
        Element valueElt 
=   new  Element( " name " );
        valueElt.addContent(
" 河北省 " );
        rootElt.addContent(selectElt);
// 建立父子关系
        selectElt.addContent(idElt);
        selectElt.addContent(valueElt);
        Document doc 
= new  Document(rootElt);
        XMLOutputter out 
= new  XMLOutputter();
        
// out.setFormat(Format.getCompactFormat().setEncoding("GB2312")); // 设置编码
        String xmlStr = out.outputString(doc);
        System.out.println(xmlStr);
        
try  {
            out.output(doc, 
new  FileOutputStream( " D:/java/work2/jdom_xml2/WebRoot/test.xml " )); // 导出xml文件在项目根目录
        }  catch  (FileNotFoundException e) {
            
//  TODO Auto-generated catch block
            e.printStackTrace();
        } 
catch  (IOException e) {
            
//  TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

}
复制代码

 本文转自施杨博客园博客,原文链接:http://www.cnblogs.com/shiyangxt/archive/2008/10/06/1304348.html,如需转载请自行联系原作者

相关文章
|
7天前
|
XML Java 数据库连接
mybatis中在xml文件中通用查询结果列如何使用
mybatis中在xml文件中通用查询结果列如何使用
8 0
|
9天前
|
XML JavaScript 前端开发
xml文件使用及解析
xml文件使用及解析
|
27天前
|
XML C# 数据格式
使用C#操作XML文件
使用C#操作XML文件
11 0
|
28天前
|
Java
java实现遍历树形菜单方法——映射文件VoteTree.hbm.xml
java实现遍历树形菜单方法——映射文件VoteTree.hbm.xml
9 0
|
30天前
|
Kubernetes Cloud Native Java
Activiti 简介以及最新activiti依赖 pom.xml文件(使用时注意对应版本号)
Activiti 简介以及最新activiti依赖 pom.xml文件(使用时注意对应版本号)
37 1
|
28天前
|
XML Java 数据库连接
struts+hibernate+oracle+easyui实现lazyout组件的简单案例——hibernate的config文件(hibernate.cfg.xml)
struts+hibernate+oracle+easyui实现lazyout组件的简单案例——hibernate的config文件(hibernate.cfg.xml)
10 0
|
23天前
Mybatis+mysql动态分页查询数据案例——配置映射文件(HouseDaoMapper.xml)
Mybatis+mysql动态分页查询数据案例——配置映射文件(HouseDaoMapper.xml)
14 1
|
27天前
|
XML Java 数据格式
使用java解析XML文件的步骤
使用java解析XML文件的步骤
10 0
|
1月前
|
SQL Java 数据库连接
Mybatis中Mapper.xml 文件使用注释遇到的坑
Mybatis中Mapper.xml 文件使用注释遇到的坑
|
1月前
|
XML Java 数据库连接
【Mybatis】XML映射文件
【Mybatis】XML映射文件
24 0