用户名: 密码: [免费注册] [忘记密码]
您的位置:首页 -- JAVA技术--
浅谈应用dom4j操作xml文件
发布:    2010-03-20     返回

大家都知道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);
writ er.close();

/** 执行成功,需返回true */
returnValue = true;
} catch (Exception ex) {
ex.printStackTrace();
}

  } catch (Exception ex) {

   ex.printStackTrace();
}
return returnValue;
}

}

典型客户
JAVA技术
 
友情链接: 沈阳网站建设 |  阜新网站建设 |  阜新网站 |  安全评价 |  沃尔沃配件 |  链接申请与客服联系
域信息科技提供专业的jsp空间服务,jsp空间,jsp空间租用,jsp空间购买,虚拟JSP主机,jsp主机,独享TOMCAT,JSP服务器
售前电话:400-004-4994
售后电话:400-004-4994
技术支持(7×24支持):400-004-4994 018241839456
公司地址:阜新市中华路65号新天地大厦9F
邮编:123000       传真:0418-2493388-606
经营性ICP证:辽B-2-4-20070114    ICP备案: 辽ICP备07005704号
域信息科技提供专业的jsp空间,虚拟JSP主机,jsp主机,独享TOMCAT,JSP服务器
域信息科技提供专业的jsp空间,虚拟JSP主机,jsp主机,独享TOMCAT,JSP服务器