用dom4j进行XML文件的创建\修改\删除

本文介绍了一个Java程序,该程序使用DOM4J库来创建XML文件,并演示了如何读取已存在的XML文件进行修改。程序首先创建一个包含书籍信息的XML文件,然后读取这个文件并根据特定条件删除或更改其中的数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

package dom;


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

public class TestDom4j {

public void createXml(String outfilename){

Document doc = DocumentHelper.createDocument();
Element books = doc.addElement("books");

Element book = books.addElement("book");
book.addAttribute("show", "no");
Element title = book.addElement("title");
title.addText("mybook");

Element book1 = books.addElement("book");
book1.addAttribute("show", "no");
Element title1 = book1.addElement("title");
title1.addText("mybook1");


Element book2 = books.addElement("book");
book2.addAttribute("show", "no");
Element title2 = book2.addElement("title");
title2.addText("mybook2");

Element owner = books.addElement("owner");
owner.addText("myself");


try{
OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding("GBK"); // 指定XML编码
XMLWriter output = new XMLWriter(
new FileWriter( new File((outfilename))),format);
output.write(doc);
output.flush();
output.close();
}
catch(IOException e){
System.out.println(e.getMessage());
}
}

public void changeXML(String filename,String newfilename ){
try{
SAXReader saxReader = new SAXReader();
Document document = saxReader.read(new File(filename));
/** 修改内容之一: 如果book节点中show参数的内容为book2,则delete */
/** 先用xpath查找对象 */
List list = document.selectNodes("/books/book");
Iterator 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().equals("mybook2")){
Element parElement=bookElement.getParent();
System.out.println("point1");
parElement.remove(bookElement);
}
}
}

/** 修改内容之一: 如果book节点中owner参数的内容为myself,则改为public */
/** 先用xpath查找对象 */
list = document.selectNodes("/books/owner");
iter = list.iterator();
if(iter.hasNext()){
Element ownerElement = (Element)iter.next();
ownerElement.setText("me");
}


/**输出到修改后的文件*/
OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding("GBK"); // 指定XML编码
XMLWriter output = new XMLWriter(
new FileWriter( new File((newfilename))),format);
output.write(document);
output.flush();
output.close();
}catch(Exception ex){
ex.printStackTrace();
}
}

public static void main(String args[]){

TestDom4j testdom=new TestDom4j();
testdom.createXml("d:/output.xml");
testdom.changeXML("d:/output.xml","d:/modify.xml");
System.out.println("well done!");

}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值