最近学习了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();
}
}
}
本文转自施杨博客园博客,原文链接:http://www.cnblogs.com/shiyangxt/archive/2008/10/06/1304348.html,如需转载请自行联系原作者