我什么都有,就是没钱

本人的android:qq群:181235811,欢迎大家加入讨论技术问题呀
  博客园  :: 首页  :: 新随笔  :: 联系 :: 管理

使用dom4j对xml文件进行增删改查

Posted on 2013-11-16 23:23  我什么都有,就是没钱  阅读(318)  评论(0)    收藏  举报

1.使用dom4j技术对dom_demo.xml进行增删改查
 首选要下载dom4j的jar包
 在官网上找不到,网上搜索了一下在这个链接:http://sourceforge.net/projects/dom4j
 下载好后进行解压,解压完成后根目录中出现的dom4j-1.6.1.jar就是我们需要的jar包

1.1导包过程如下:
 在工程名下简历一个文件夹lib
 复制dom4j-1.6.1.jar到lib下
 右键点击dom4j-1.6.1.jar,选择build path,选择add to build path,然后jar包就导入进去了
 
 关于dom4j操作xml文件的使用方法,可以参看下载包中的docs文件下的index.html
 注:每个jar包中都有一个快速使用jar的方法,对于这个dom4j就是点击左边栏中的quick start

 

 

1.2  dom_demo.xml内容如下:

<?xml version="1.0" encoding="utf-8"?>

<书架> 
  <> 
    <书名>java web 开发</书名>  
    <售价>39.0</售价> 
  </>  
  <> 
    <书名>java核心技术</书名>  
    <作者>李九</作者>  
    <售价>40.0</售价> 
  </>  
  <> 
    <书名>c语言程序设计</书名>  
    <作者>王五</作者>  
    <售价>60</售价> 
  </> 
</书架>

 

 

1.3 XmlUtils.java

  这个类是用来作为工具类使用的

package cn.zyf.utils;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.OutputStreamWriter;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;

public class XmlUtils {
    private XmlUtils(){}
    
    public static Document getDocument() throws DocumentException{
        SAXReader reader = new SAXReader();        
        return reader.read("src/dom_demo.xml");

    }
    
    public static void writeDocument(Document document) throws IOException{
        /*
        OutputStreamWriter os= new OutputStreamWriter(new FileOutputStream("src/dom_demo.xml"), "utf-8");
        OutputFormat format = OutputFormat.createPrettyPrint();
        XMLWriter writer = new XMLWriter( os, format );
        *或者可以有另一种写法
        */
        OutputFormat format = OutputFormat.createPrettyPrint();
        format.setEncoding("utf-8");
        XMLWriter writer = new XMLWriter(new FileOutputStream("src/dom_demo.xml"), format );
        
        writer.write( document );
        writer.close();
    }
}

 

 

 1.4  DomXmlDemo.java代码如下

 

package cn.zyf.dom;

import java.io.IOException;
import java.util.Iterator;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import org.junit.Test;

import cn.zyf.utils.XmlUtils;

public class DomXmlDemo {

    /**
     * @param args
     * @throws DocumentException 
     */
    //curd
    @Test
    public void elementFind() throws DocumentException{
        
        //加载文档
        Document document = XmlUtils.getDocument();
        
        //获得根元素
        Element root = (Element) document.getRootElement();
        //System.out.println("根元素: "+ root.getName());
        
        for(Iterator iter = root.elementIterator(); iter.hasNext();){
            Element linkman = (Element)iter.next();
            System.out.println("元素名为: "+ linkman.getName());
            String bookName = linkman.elementText("书名");
            String author = linkman.elementText("作者");
            
            System.out.println("书名:"+ bookName + " 作者:" + author);
        }
    }
    
    //添加一个元素,书,书名:c语言程序设计,作者:王五,价格:60
    @Test
    public void elementadd() throws DocumentException, IOException{
        
        Document document = XmlUtils.getDocument();
        Element root = (Element)document.getRootElement();
        
        Element book = root.addElement("书");
        //.addAttribute("书名", "c语言程序设计").addAttribute("作者", "王五").addAttribute("价格", "50");
        Element bookName = book.addElement("书名").addText("c语言程序设计");
        Element bookAuthor = book.addElement("作者").addText("王五");
        Element bookPrice = book.addElement("售价").addText("60");
        
        XmlUtils.writeDocument(document);    
    }
    
    //添加属性
    @Test
    public void attributeadd() throws DocumentException, IOException{
        Document document = XmlUtils.getDocument();
        Element root = (Element)document.getRootElement();
        
        Element bookAuthor = root.element("书").element("作者");
        bookAuthor.addAttribute("年龄", "30");
        
        XmlUtils.writeDocument(document);    
    }
    
    //修改第二本书的作者
    @Test
    public void elementModify() throws DocumentException, IOException{
        Document document = XmlUtils.getDocument();
        Element root = (Element)document.getRootElement();
        
        //获得作者
        Element bookAuthor = ((Element)root.elements("书").get(1)).element("作者");
        
        //修改名字
        bookAuthor.setText("李九");
        
        XmlUtils.writeDocument(document);
        
    }
    
    //删除指定的节点
    //删除第一本书的作者
    @Test
    public void elmentDelet() throws IOException, DocumentException{
        Document document = XmlUtils.getDocument();
        Element root = (Element)document.getRootElement();
        
        Element bookAuthor = root.element("书").element("作者");
        bookAuthor.getParent().remove(bookAuthor);
        
        XmlUtils.writeDocument(document);
    } 
    
    

}