dom4j(Javacode)

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;public class Dom4jDemo {   public boolean 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);      writer.write(doc);      writer.flush();     //      isOk= true;    }catch(Exception e){      e.printStackTrace();    }   return isOk;  } public boolean 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();//加载迭代器      //迭代集合      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"))//对比值            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  */ public void 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();    }  }   //递归遍历  private void 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  */ public static void main(String[] args){   long start= System.currentTimeMillis();//开始计时    Dom4jDemo dom4jDemo= new Dom4jDemo();    String fileName= "dom4jDemo.xml";    String newFileName= "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)+"毫秒!");  }}

抱最大的希望,为最大的努力,做最坏的打算

dom4j(Javacode)

相关文章:

你感兴趣的文章:

标签云: