用dom4j进行XML文件的创建\修改\删除

package dom;


import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Iterator;
import java.util.List;

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 TestDom4j {

public void createXml(String outfilename){
 
        Document doc = DocumentHelper.createDocument();
        Element books = doc.addElement("books");
       
        Element book = books.addElement("book");
        book.addAttribute("show", "no");
        Element title = book.addElement("title");
        title.addText("mybook");
    
        Element book1 = books.addElement("book");
        book1.addAttribute("show", "no");
        Element title1 = book1.addElement("title");
        title1.addText("mybook1");
       
      
        Element book2 = books.addElement("book");
        book2.addAttribute("show", "no");
        Element title2 = book2.addElement("title");
        title2.addText("mybook2");
       
        Element owner = books.addElement("owner");
        owner.addText("myself");
       
       
        try{
            OutputFormat format = OutputFormat.createPrettyPrint();
            format.setEncoding("GBK");    // 指定XML编码     
            XMLWriter output = new XMLWriter(
                    new FileWriter( new File((outfilename))),format);
                output.write(doc);
                output.flush();
                output.close();
                }
             catch(IOException e){
           System.out.println(e.getMessage());
           }
          }

      public void changeXML(String filename,String newfilename ){
          try{
              SAXReader saxReader = new SAXReader();   
              Document document = saxReader.read(new File(filename));
              /** 修改内容之一: 如果book节点中show参数的内容为book2,则delete */
              /** 先用xpath查找对象 */
              List list = document.selectNodes("/books/book");  
              Iterator iter = list.iterator();
              while(iter.hasNext()){
                  Element bookElement = (Element)iter.next();
                  Iterator iterator = bookElement.elementIterator("title");
                  while(iterator.hasNext()){
                      Element titleElement=(Element)iterator.next();
                      if(titleElement.getText().equals("mybook2")){
                       Element parElement=bookElement.getParent();
                        System.out.println("point1");
                         parElement.remove(bookElement);
                     }
                  }
              }
             
              /** 修改内容之一: 如果book节点中owner参数的内容为myself,则改为public */
              /** 先用xpath查找对象 */
              list = document.selectNodes("/books/owner");
              iter = list.iterator();
              if(iter.hasNext()){
                  Element ownerElement = (Element)iter.next();
                  ownerElement.setText("me");
              }
             
               
            /**输出到修改后的文件*/
              OutputFormat format = OutputFormat.createPrettyPrint();
              format.setEncoding("GBK");    // 指定XML编码     
              XMLWriter output = new XMLWriter(
                      new FileWriter( new File((newfilename))),format);
                  output.write(document);
                  output.flush();
                  output.close();
              }catch(Exception ex){
                  ex.printStackTrace();
              }
          }
  
    public static void main(String args[]){

         TestDom4j testdom=new TestDom4j();
       testdom.createXml("d:/output.xml");
       testdom.changeXML("d:/output.xml","d:/modify.xml");
       System.out.println("well done!");
     
    }
}

你可能感兴趣的:(xml)