当前位置: 首页 > 图文教程 > Java技术 > Web框架 > 浅谈应用dom4j操作xml文件

Web框架
Web框架介绍---SpringMVC
基于Django框架的敏捷Web开发
驾驭新的Ruby Web框架Waves
JAVA脚本取得struts2 OgnlValueStack中的值
Struts中DownloadAction的使用
优化Hibernate性能的几点建议
Hibernate高级查询实战
对于Struts和Spring两种MVC框架的比较
JSF与Struts的比较 超易懂!
hibernate 主键生成方式
spring acegi 官方例子
获取ApplicationContext的几种方式
Spring与自动调度任务 基于Timer的任务调度器的应用
spring+hibernate 的包的详解,帮你了解每个包的作用以及是否必要导入工程
hibernate 一对一(one to one)级联保存
struts formbean 就是鸡肋
Struts中常用的几种Action
spring的应用事例
struts2(一)
struts2(二)

Web框架 中的 浅谈应用dom4j操作xml文件


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2010-03-20   浏览: 472 ::
收藏到网摘: n/a

最近一直关注程序员之家论坛,在帖子上看到有人对读写xml操作有所疑惑,所以小编拿个例子和大家分享下,希望对新手有所帮助。
先声明下哈,我在这里只是简单的说一下,希望对初学者有所帮助!大家都知道dom4j 是一种解析 XML 文档的开放源代码 XML 框架。它是一个易用的、开源的库,用于XML,XPath和XSLT。它应用于Java平台,采用了Java集合框架并完全支持DOM,SAX和JAXP。今天就拿dom4j中1.6.1版本为例!
如果我们利用dom4j来操作xml:
(1)首先要导入一个jar包,那就是dom4j
(2)其次定义一个解析类,以下给出部分代码:
import java.io.*;
import java.util.*;
import org.dom4j.*;
import org.dom4j.io.*;
import javax.servlet.http.HttpServlet;
public class XML {
 public static void main(String[] arg0)   
    {   
     XML sys = new XML();
     String str = sys.getProperty("UC.KEY");
     System.out.println("value:" + str);
    }
 public String getProperty(String parter){
     String returnStr = "";
     try {
      //获取绝对路径
StringfPath=Thread.currentThread().getContextClassLoader()
.getResource("").getPath().toString();
   //得到工程的WEB-INF路径
   fPath = fPath.substring(0,fPath.indexOf("WEB-INF")+8);
   File scXml = new File(fPath +"systemConfig.xml");
   SAXReader reader = new SAXReader();
   Document document = reader.read(scXml);
   Element root = document.getRootElement();
   Element foo;
   for (Iterator i = root.elementIterator("sConfig"); i.hasNext();) {
    foo = (Element) i.next();
    if(foo.elementText("name").equals(parter)){
     returnStr = foo.elementText("value");
    }
   }
 } catch (Exception e) {
   e.printStackTrace();
 }
     return returnStr;
    }
/*
 修改XML文档
 有三项修改任务,依次为:
 l        如果book节点中show属性的内容为yes,则修改成no
 2         把owner项内容改为Tshinghua,并添加date节点
 3         若title内容为Dom4j Tutorials,则删除该节点
*/
 public static boolean modifyDocument(File inputXml) {
 boolean returnValue = false;
 try {
   SAXReader saxReader = new SAXReader();
   Document document = saxReader.read(inputXml);
   /** 修改内容之一: 如果book节点中show属性的内容为yes,则修改成no */
   /** 先用xpath查找对象
   */
   List list = document.selectNodes("/books/book/@show");
   Iterator iter = list.iterator();
   while (iter.hasNext()) {
    Attribute attribute = (Attribute) iter.next();
    System.out.print("show old = " + attribute.getValue());
    if (attribute.getValue().equalsIgnoreCase("no"))
     attribute.setValue("yes");
    System.out.println("| show new = " + attribute.getValue());//修改后的值
   }
   /**
    * 修改内容之二: 把owner项内容改为Tshinghua
    * 并在owner节点中加入date节点,date节点的内容为2010-02-05,还为date节点添加一个属性type
    */
   list = document.selectNodes("/books/owner");
   iter = list.iterator();
   while (iter.hasNext()) {
    Element ownerElement = (Element) iter.next();
    ownerElement.setText("Change by alo "+System.currentTimeMillis());//设置内容
    //附件内容,有 date 节点则删除节点再添加
    Iterator dateiterator = ownerElement.elementIterator("date");
    while (dateiterator.hasNext()) {
     Element dateElement = (Element) dateiterator.next();
     System.out.println("删除前的date: "+dateElement.getText());
     System.out.println("dateElement = "+dateElement.getText());
     ownerElement.remove(dateElement);//删除节点
    }
    Element dateElement = ownerElement.addElement("date");//添加子节点
    dateElement.setText("2008-08-26");
    dateElement.addAttribute("type", "add by alo");
   }
   /** 修改内容之三: 若title内容为Study alo,则删除该节点 */
   list = document.selectNodes("/books/book");
   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().equalsIgnoreCase("Study alo")) {
      bookElement.remove(titleElement);//删除节点
     }
    }
   }
 

   try {

 
    /** 将document中的内容写入文件中 */
    XMLWriter writer = new XMLWriter(new FileWriter(inputXml));
    writer.write(document);
    writer.close();
   
    /** 执行成功,需返回true */
    returnValue = true;
   } catch (Exception ex) {
    ex.printStackTrace();
   }
 

 } catch (Exception ex) {

 
   ex.printStackTrace();
 }
 return returnValue;
 }
 

}

 
 

以上就是小编要和大家分享的dom4j操作xml文件,很简单吧!其实掌握一门技术都是从简单开始的,由浅入深嘛!