且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

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

更新时间:2022-09-16 17:59:07

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

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

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

总结如下:

搭建环境:MyEclipse6.5

使用jar包jdom.jar

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

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

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

 

J2EE实现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>
J2EE实现XML文件的读取与导出(源码)

 

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

 

 

J2EE实现XML文件的读取与导出(源码)
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;
    }

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

 

下面是读取类:GlobalConfigure.java

 

J2EE实现XML文件的读取与导出(源码)
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());
        
    }
}
J2EE实现XML文件的读取与导出(源码)

这样就可以读取了。

 

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

J2EE实现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();
        }
    }

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

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