通过Dom4J操作(创建、读取和修改)XML文件

来源:互联网 发布:网络机顶盒连接笔记本 编辑:程序博客网 时间:2024/06/06 14:00

    DOM4J是一个非常非常优秀的Java XML API,具有性能优异、功能强大和极端易用使用的特点,同时它也是一个开放源代码的软件。使用时需要引入的类包包括:dom4j-1.6.1.jar和jaxen-1.1-beta-7.jar(需要引入,否则执行时可能抛java.lang.NoClassDefFoundError:org/jaxen/JaxenException异常)

————————————————————代码如下—————————————————————

package com.dom4j;

 

import java.io.File;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Writer;
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.XMLWriter;
import org.dom4j.Attribute;
import org.dom4j.io.SAXReader;

 

/**
 * @功能描述:通过Dom4J操作(创建、读取和修改)XML文件
 */

public class Dom4JXML {

 

public static void main(String[] args) {
   createXML();
       updateXML(info);
 }
 
 /**
  * 创建XML文件
  */
 public static void createXML() {
     Document doc = DocumentHelper.createDocument(); //用工厂类创建一个实例
     Element rootEle = doc.addElement("emps");             //创建根元素emps
     rootEle.addComment("这是一个dom4j生成的xml文件");  //添加注释
     Element empEle = rootEle.addElement("emp");         //emps根节点下创建一个emp节点
     empEle.addAttribute("id", "1");                               //emp添加属性id="1"
     Element nameEle = empEle.addElement("name");     //emp节点下创建一个name节点
     nameEle.setText("zhangsan");                                //name节点下创建一个文本节点  

     Element sexEle = empEle.addElement("sex");           //再为name节点创建一个兄弟节点
     sexEle.setText("man");


     //将document中的内容写入文件中
     try {
         Writer out = new FileWriter("F://emps.xml");
         OutputFormat format = OutputFormat.createPrettyPrint();   //格式化输出
         format.setEncoding("GBK");                                             //设置编码          
         XMLWriter writer = new XMLWriter(out,format);                  //创建写出对象
         writer.write(doc);
         writer.close();
         System.out.println("创建emps.xml成功!");
     } catch (IOException e) {
         System.out.println("失败了!");
     }
 }

 

 

 /**
  * 修改XML文件
  */

 public static void updateXML(String info){
     try {

         info = "<root><notice><title>公告标题</title><content>公告内容</content><progress>招聘流程</progress></notice></root>";
         SAXReader reader = new SAXReader();                  //创建读入对象
         Document doc = reader.read(new FileInputStream(new File("F://emps.xml"))); //读取文件

         Document doc = DocumentHelper.parseText(info);       //读取XML字符串
  

         List listAttr = doc.selectNodes("/emps/emp/@id");    //查找节点emp下的id属性
         Iterator itAttr = listAttr.iterator();               
         while(itAttr.hasNext()){
             Attribute attr = (Attribute) itAttr.next();
             attr.setValue("001");                            //emp属性修改为001
         }
         
         List listText = doc.selectNodes("/emps/emp/name");   //查找emp下的name节点
         Iterator itText = listText.iterator();
         while(itText.hasNext()){
             Element textEle = (Element) itText.next();
             textEle.setText("张三");                         //name节点的内容修改为"张三"

         }
         
         List listEle = doc.selectNodes("/emps/emp");         //查找emp节点
         Iterator itEle = listEle.iterator();
         while(itEle.hasNext()){
             Element empEle = (Element) itEle.next();
             Iterator itSex = empEle.elementIterator("sex");  //查找emp下的sex节点
             while(itSex.hasNext()){
                 Element sexEle = (Element) itSex.next();
                 empEle.remove(sexEle);                       //删除sex节点
             }
         }
         

         Writer out = new FileWriter("F://emps(update).xml");       //创建写出流
         OutputFormat format = OutputFormat.createPrettyPrint();    //格式化输出
         format.setEncoding("UTF-8");
         XMLWriter writer = new XMLWriter(out,format);              //创建写出对象
         writer.write(doc);
         writer.close();
         System.out.println("生成emps(update).xml成功。");
      } catch (Exception e) {
        System.out.println("失败了!");
      }
   }

}

原创粉丝点击