博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
J2EE实现XML文件的读取与导出(源码)
阅读量:7127 次
发布时间:2019-06-28

本文共 5988 字,大约阅读时间需要 19 分钟。

最近学习了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,如需转载请自行联系原作者

你可能感兴趣的文章
find 命令详解
查看>>
OO第二阶段总结
查看>>
eclipse创建的maven项目中使用javafx
查看>>
如何快速熟悉公司的旧代码
查看>>
python+ddt+unittest+excel+request实现接口自动化
查看>>
第八周周记
查看>>
Jni Error(app bug): accessed stale local reference 的另类出现方式
查看>>
myeclipse 解决乱码问题
查看>>
iOS Https 配置 及AFN 相关配置
查看>>
Table-Valued Parameters in SQL Server 2008 (ADO.NET)
查看>>
推荐系统常用的算法参考
查看>>
[Todo] Java并发编程学习
查看>>
Redis cluster学习 & Redis常识 & sort操作
查看>>
mysql 中实现多条数据同时更新
查看>>
2011 ACM/ICPC 成都赛区(为2013/10/20成都现场赛Fighting)
查看>>
Linux技术进阶示意图
查看>>
php设计模式课程---6、策略模式如何使用
查看>>
html5--6-8 CSS选择器5
查看>>
20145328 《信息安全系统设计基础》第6周学习总结
查看>>
python学习笔记:"爬虫+有道词典"实现一个简单的英译汉程序
查看>>