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