DOM4J操作XML

 

 

import java.io.FileNotFoundException;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.UnsupportedEncodingException;

import java.util.Iterator;

 

 

import org.dom4j.Document;

import org.dom4j.DocumentException;

import org.dom4j.DocumentHelper;

import org.dom4j.Element;

import org.dom4j.io.OutputFormat;

import org.dom4j.io.SAXReader;

import org.dom4j.io.XMLWriter;

 

 

publicclass operateXML {

    /**

     * 解析XML

     * @param fileName XMl名称

     */

    publicvoid parseXml(String fileName){

       //1.构建解析器SAXReader

       SAXReader reader = new SAXReader();

      

       Document doc =null;//声明document转换器

       try {

           //2.XML文件转换成document对象reader.read(filename);

           doc = reader.read(fileName);

       } catch (DocumentException e) {       

           e.printStackTrace();

       }

       //3.获得根元素getRootElement()

       Element root = doc.getRootElement();

      

       //4.遍历元素集合root.elementIterator()

       //Iterator<Element> iter= root.elementIterator();

      

       for (Iterator<Element> iter = root.elementIterator();iter.hasNext();){

           Element element = iter.next();

           String fruit = element.attributeValue("fruit");//获取子元素标签

           String name = element.elementText("name");//获取name属性的值

           String color = element.elementText("color");//获取color属性的值

 

           //答应输出信息

           System.out.println("节点:"+fruit);

           System.out.println("name:"+name);

           System.out.println("color:"+color);

           System.out.println("---------------------");

       }

    }

   

    /**

     * 生成XML

     * @param filename xml文件名

     */

    publicvoid createXML(String filename){

       //1. 使用DocumentHelper.createDocument()构建一个   dom4jdocument对象

       Document doc = DocumentHelper.createDocument();

       //2.从根节点开始构建节点和树形结构

       Element root = doc.addElement("fruits");

      

       Element fruit1=root.addElement("fruit");

       fruit1.addAttribute("fruitNo","1");//设置属性

       fruit1.addElement("name").addText("苹果");

       fruit1.addElement("color").addText("红色");

      

       Element fruit2=root.addElement("fruit");

       fruit2.addAttribute("fruitNo","2");//设置属性

       fruit2.addElement("name").addText("橙子");

       fruit2.addElement("color").addText("橙色");

      

       //3.设置格式OutputFormat

       OutputFormat format = OutputFormat.createCompactFormat();

       format.setEncoding("UTF-8");

      

       //4.实例化一个XMLWriter输出对象,打开输出流

       XMLWriter out= null;

       try {

           out = new XMLWriter(new FileOutputStream(filename),format);

       } catch (UnsupportedEncodingException e) {

           e.printStackTrace();

       } catch (FileNotFoundException e) {

           e.printStackTrace();

       }

       //5. document对象输出到xml文件out.write(doc);

       try {

           out.write(doc);

       } catch (IOException e) {

           e.printStackTrace();

       }finally{

           //6.关闭输出流out.close();

           try {

              out.close();

           } catch (IOException e) {

              e.printStackTrace();

           }

       }

 

    }

    /**

     * 修改XML

     * @param filename xml名称

     */

    publicvoid modifyXML(String filename){

       //构建解析器SAXReader

       SAXReader reader = new SAXReader();

      

       Document doc =null;//声明document转换器

       try {

           //2.XML文件转换成document对象reader.read(filename);

           doc = reader.read(filename);

       } catch (DocumentException e) {       

           e.printStackTrace();

       }

       //3.获得根元素getRootElement()

       Element root = doc.getRootElement();

      

       //4.遍历元素集合root.elementIterator()

       for(Iterator<Element> iter = root.elementIterator();iter.hasNext();){

           Element fruit = iter.next();

          

           //5.修改文本内容或属性值

           if(fruit.elementText("name").equals("苹果")){

              //fruit.selectSingleNode("color").setText("青色");

              //Element name =fruit.getChild("name");

              //name.setText("苹果");

             

              fruit.element("color").setText("青色");

              fruit.remove(fruit.attribute("fruitNo"));

           }

       }

      

       //6.设置格式OutputFormat

       OutputFormat format = OutputFormat.createCompactFormat();

       format.setEncoding("UTF-8");

 

       //7.实例化一个XMLWriter输出对象,打开输出流

       XMLWriter out = null;

       try {

           out = new XMLWriter(new FileOutputStream(filename),format);

       } catch (UnsupportedEncodingException e) {

           e.printStackTrace();

       } catch (FileNotFoundException e) {

           e.printStackTrace();

       }

      

       //8. document对象输出到xml文件out.write(doc);

       try {

           out.write(doc);

       } catch (IOException e) {

           e.printStackTrace();

       }finally{

           //9.关闭输出流out.close();

           try {

              out.close();

           } catch (IOException e) {

              e.printStackTrace();

           }

       }

    }

   

    publicstaticvoid main(String[] args) {

       //实例化操作xml对象

       operateXML op = new operateXML();

       //解析XML

       op.parseXml("fruit.xml");

       //创建XML

       op.createXML("fruits.xml");

       //修改XML

       op.modifyXML("fruit.xml");

       //解析XML

       op.parseXml("fruit.xml");

      

    }

}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值