Java学习

java,spring,structs,hibernate,jsf,ireport,jfreechart,jasperreport,tomcat,jboss -----本博客已经搬家了,新的地址是 http://www.javaly.cn 如果有对文章有任何疑问或者有任何不懂的地方,欢迎到www.javaly.cn (Java乐园)指出,我会尽力帮助解决。一起进步

 

dom4j(Java code)

import java.io.File;
import java.io.FileWriter;
import java.util.Iterator;
import java.util.List;
import org.dom4j.Attribute;import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;

publicclass Dom4jDemo {
   
   
publicboolean createXML(String fileName){
       
boolean isOk=false;
       
//建立document对象
        Document doc= DocumentHelper.createDocument();
       
//建立XML文档的根books
        Element students= doc.addElement("students");
        students.addComment(
"This is a test for dom4j");//加入一行注释
        /**加入第一个student节点*/
        Element student
= students.addElement("student");//加入第一个student节点
        student.addAttribute("value","god");//加入value属性和值
        Element name= student.addElement("name");//加入name节点
        name.setText("finina");//为name设置值
        Element age=student.addElement("age");//加入age节点
        age.setText("25");//
为age设置值
        Element sex=student.addElement("sex");//加入sex节点
        sex.setText("male");//为sex设置值
        /**加入第二个student节点*/
        student
= students.addElement("student");
        student.addAttribute(
"value","cat");
        name
= student.addElement("name");
        name.setText(
"fly");
        age
=student.addElement("age");
        age.setText(
"17");
        sex
=student.addElement("sex");
        sex.setText(
"female");
       
/**加入team节点*/
        Element team
=students.addElement("team");
        team.addText(
"05093A");
       
/**
         *将doc中的内容写入xml文件中
         *
*/
       
try{
            OutputFormat format
= OutputFormat.createPrettyPrint();//设置格式
            format.setEncoding("GBK");//必要,否则无法解析中文
           
//输出为文件
            XMLWriter writer=new XMLWriter(new FileWriter(fileName),format);
            wr
iter.write(doc);
            writer.flush();
           //
            isOk=true;
        }
catch(Exception e){
            e.printStackTrace();
        }
       
return isOk;
    }

   
publicboolean modifigXML(String oldFileName,String newFileName){
       
boolean isOk=false;
       
try{
            SAXReader reader
=new SAXReader();//创建SAX阅读器
            Document doc= reader.read(new File(oldFileName));//将所有文件内容读取生存Document对象
            /**修改内容之一: 如果student节点中value属性的内容为god,则修改成king
             *因为做人不能太嚣张
            
*/
            List list
= doc.selectNodes("/students/student/@value");//搜索出所有位于students节点下的student节点中的value属性位置放入集合中
            Iterator iter= list.iterator();//加载迭代器
           
//迭代集合
            while(iter.hasNext()){
                Attribute attr
= (Attribute)iter.next();
               
if(attr.getValue().equals("god"))//比对值是否相等
                    attr.setValue("king");//设置值
            }

            list
= doc.selectNodes("/students/team");//搜索出所有位于students节点下team节点位置放入集合中
            iter= list.iterator();//an style="COLOR: #008000">加载迭代器
            //迭代集合
            if(iter.hasNext()){
                Element team
= (Element)iter.next();
                team.setText(
"05084A");//设置值
                Element teacher= team.addElement("teacher");//添加节点
                teacher.setText("godfather");//为新的节点设置值
                teacher.addAttribute("skill","programme");//为新的节点添加属性
            }
           
/**修改内容之三: 若age内容为17,则删除该节点
             *未成年人需要被保护...
            
*/
            list
= doc.selectNodes("/students/student");//搜索出所有位于students节点下的student节点位置放入集合中
            iter= list.iterator();//加载迭代器
           
//迭代集合
            while(iter.hasNext()){
                Element elem
= (Element)iter.next();
                Iterator iterElem
= elem.elementIterator("age");//将该节点下所有的age节点生成一个迭代器
               
//迭代集合
                if(iterElem.hasNext()){
                    Element remTitle
= (Element)iterElem.next();
                   
if(remTitle.getText().equals("17"))000">//对比值
                        elem.remove(remTitle);//移除该节点
                }
            }
           
//将doc中的内容写入文件中
            OutputFormat format= OutputFormat.createPrettyPrint();//设置格式
            format.setEncoding("GBK");//必要,否则无法解析中文
            
//输出为文件,以上操作只是在内存中修改,需要保存为文件来确认修改
            XMLWriter writer=new XMLWriter(new FileWriter(newFileName),format);
            writer.write(doc);
            writer.flush();
            isOk
=true;
        }
catch(Exception e){
            e.printStackTrace();
        }
       
return isOk;
    }
   
/**
     *the method readXML
    
*/
   
publicvoid readXML(String fileName){
       
try{
            File file
=new File(fileName);//创建文件对象
            SAXReader reader=new SAXReader();//创建SAX阅读器
            Document doc= reader.read(file);//读取内容生成Document对象
            Element root= doc.getRootElement();//取得根节点
            search(root);//开始遍历
        }catch(Exception e){
            e.printStackTrace();
        }
    }
   
   
//递归遍历
    privatevoid search(Element root) {
  Iterator it_element= root.elementIterator();//将根节点下包含的元素组织成一个迭代器
       
//迭代
        while( it_element.hasNext()) {
            Element element
= (Element)it_element.next();
           
if(!element.getText().equals(""))
            {
                System.out.println(element.getName()
+"节点的值是"+element.getText());
            }
           
else
            {
                System.out.println(element.getName()
+"节点");
            }
            Iterator it_attr
= element.attributeIterator();
           
while( it_attr.hasNext()) {
                Attribute attr
= (Attribute)it_attr.next();
               
if(attr!=null)
                {
                    System.out.println(element.getName()
+"节点的属性"+attr.getName()+"的值是"+ attr.getValue());
                }
            }
            search(element);
//递归调用
        }
    }
   
/**
     *the method main
    
*/
   
publicstaticvoid main(String[] args){
       
long start= System.currentTimeMillis();//开始计时
        Dom4jDemo dom4jDemo=new Dom4jDemo();
        String fileName
="dom4jDemo.xml";
        String newFileName
#000000">="new_dom4jDemo.xml";
        System.out.println(fileName
+"正在创建中...");
       
boolean isOk_create= dom4jDemo.createXML(fileName);
       
if(isOk_create) System.out.println(fileName+"创建成功!");
       
else System.out.println("创建失败!请检查后重新再试!");
       
        System.out.println(
"正在更新中...");
       
boolean isOk_modi= dom4jDemo.modifigXML(fileName, newFileName);
       
if(isOk_modi) System.out.println("恭喜,更新完成!");
       
//
        System.out.println("正在读取文件"+fileName+" ...");
        System.out.println(
"------------------------------------------------");
        dom4jDemo.readXML(fileName);
        System.out.println(
"------------------------------------------------");
        System.out.println(fileName
+"读取成功!");
        System.out.println(
"正在读取文件"+newFileName+" ...");
        System.out.println(
"------------------------------------------------");
        dom4jDemo.readXML(newFileName);
        System.out.println(
"------------------------------------------------");
        System.out.println(fileName
+"读取成功!");
        System.out.println(
"一共耗时:"+(System.currentTimeMillis()-start)+"毫秒!");
    }
}

posted on 2009-06-19 15:19 找个美女做老婆 阅读(206) 评论(0)  编辑  收藏


只有注册用户登录后才能发表评论。


网站导航:
 

导航

统计

公告

本blog已经搬到新家了, 新家:www.javaly.cn
 http://www.javaly.cn

常用链接

留言簿(6)

随笔档案

文章档案

搜索

最新评论

阅读排行榜

评论排行榜