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>
<!-- 配置数据库信息 -->
<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;
}
}
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());
}
}
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();
}
}
}
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();
}
}
}
作者:Steven(Steven's Think out)
出处:http://shiyangxt.cnblogs.com
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。