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!");
}
}
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!");
}
}