最近一直关注程序员之家论坛,在帖子上看到有人对读写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文件,很简单吧!其实掌握一门技术都是从简单开始的,由浅入深嘛!