注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

欢迎来到三件事的空间

欢迎登陆 javacs.cn

 
 
 

日志

 
 

基于JDOM的XML读写操作  

2010-09-14 11:38:25|  分类: java |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
 做项目的时候,经常将系统的配置信息等写到XML文件当中,以方便系统参数的修改,此时,我们就必须使对XML进行操作的编码。
    JDOM 是一个历史非常久的一个XML解释及操作工具,虽然现在已经停止开发了,据说是JDOM的开发团队大部人都跳槽到DOM4J去了,呵呵,原来开源的项目开 发人员也存在跳槽这种现象!但一些历史原因,现在很多企业都还在使用这个工具。我个人也挺喜欢这个工具的,不是喜欢我不想使用新技术,因为实现起来非常简 单,再说对XML也只是停留在简单地读跟简单地写业务上,也没有必要去使用那么新的东西了!DOM4J现在我自己的项目也在应用,其实两者编程上都非常接 近。
    一、读XML;
    假如我们现在需要对以下XML文件进行读取:
SynchronizedService.xml
程序代码 程序代码
<?xml version="1.0" encoding="UTF-8"?>
<synchronized-service>
    <database-config>
        <property name="driver">oracle.jdbc.OracleJdbcDriver</property>
        <property name="url">jdbc:oracle:thin:@dbserver1:1521:nitpro</property>
        <property name="user">test</property>
        <property name="password">test</property>
    </database-config>
</synchronized-service>


读取该文件的实现:
程序代码 程序代码
package zizz;

import java.io.InputStream;
import java.util.Iterator;
import java.util.List;

import org.jdom.Document;
import org.jdom.Element;
import org.jdom.input.SAXBuilder;

/**
*
* 基于JDOM的XML阅读器.
* @author ZIZZ.
* @version Create Date: 2007-11-24 下午07:34:03.
*/

public class XMLReader {
    
    public static void main(String[] args){
        XMLReader reader = new XMLReader();
        try {
            reader.readXML();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    
    /**
     * 读取XML文件
     * @throws Exception
     */

    public void readXML() throws Exception{
        String fileName = "/SynchronizedService.xml";
        InputStream is = XMLReader.class.getResourceAsStream(fileName);
        SAXBuilder builder = new SAXBuilder();
        Document document = builder.build(is);
        //得到根元素
        Element rootElement = document.getRootElement();
        //得到子元素
        Element databaseElement = rootElement.getChild("database-config");
        //得到子元素的属性
        List children = databaseElement.getChildren();
        Iterator iter = children.iterator();
        while(iter.hasNext()){
            Element element = (Element)iter.next();
            //输出属性名
            System.out.println(element.getAttributeValue("name"));
            //输出值
            System.out.println(element.getText());
        }
    }

}



      二、写XML
程序代码 程序代码
package zizz;

import java.io.FileOutputStream;

import org.jdom.Document;
import org.jdom.Element;
import org.jdom.output.Format;
import org.jdom.output.XMLOutputter;

/**
*
* 基于JDOM技术的XML写操作.
* @author ZIZZ.
* @version Create Date: 2007-11-24 下午07:46:15.
*/

public class XMLWriter {

    public static void main(String[] args) throws Exception{
        xmlWriter();
    }
    
    /**
     * 写XML文件
     * @throws Exception
     */

    public static void xmlWriter() throws Exception{
        //创建一个根元素
        Element rootElement = new Element("synchronized-service");
        //由根元素来创建一个新的文档
        Document doc = new Document(rootElement);
        //创建一个数据库配置元素
        Element configEle = new Element("database-config");
        //设置父子关系
        rootElement.addContent(configEle);
        //定义数据库驱动的元素
        Element driverEle = new Element("property");
        driverEle.setAttribute("name", "driver");
        driverEle.setText("oracle.jdbc.OracleJdbcDriver");
        configEle.addContent(driverEle);
        
        //定义数据库驱动的元素
        Element urlEle = new Element("property");
        urlEle.setAttribute("name", "url");
        urlEle.setText("jdbc:oracle:thin:@dbserver1:1521:ORA10G");
        configEle.addContent(urlEle);
        
        //定义数据库驱动的元素
        Element userEle = new Element("property");
        userEle.setAttribute("name", "user");
        userEle.setText("test");
        configEle.addContent(userEle);
        
        //定义数据库驱动的元素
        Element passEle = new Element("property");
        passEle.setAttribute("name", "password");
        passEle.setText("test");
        configEle.addContent(passEle);
        
        //定义输出格式
        Format format = Format.getPrettyFormat();
        format.setEncoding("UTF-8");
        XMLOutputter xmlOutputer = new XMLOutputter();        
        xmlOutputer.setFormat(format);
        xmlOutputer.output(doc, new FileOutputStream("c:/synchronized.xml"));
    }
    
}


生成的XML
程序代码 程序代码
<?xml version="1.0" encoding="UTF-8"?>
<synchronized-service>
  <database-config>
    <property name="driver">oracle.jdbc.OracleJdbcDriver</property>
    <property name="url">jdbc:oracle:thin:@dbserver1:1521:ORA10G</property>
    <property name="user">test</property>
    <property name="password">test</property>
  </database-config>
</synchronized-service>
  评论这张
 
阅读(91)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017