我的java学习之路-基础-DOM4J

来源:互联网 发布:投弹兵升级数据 编辑:程序博客网 时间:2024/06/06 16:28
package cn.bxt.oop.xml;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;
import java.util.Iterator;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
/*
 *(1)从外界导入包:右键---》 Build Path---》Configure Build Path---》select "Library" tab--->Add External Jars
 *(2) SAXReader :SAX:Simple API for XML;
 *DOM:在内存中创建文档树;内存占用多,适合小的xml文档;
 *SAX:不是创建文档树,以事件驱动,用字节流,一边读一边解析;内存占用少;
 * 
 * 
 */
import org.dom4j.io.XMLWriter;

public class DOM4j {

public static void main(String[] args) throws DocumentException, IOException {
//1.解析文档;
SAXReader reader=new SAXReader();
Document document=reader.read("e:\\books.xml");
//add(document);
//check(document);
//update(document);
delete(document);
        save(document);
}
public static void add(Document document){
//2.add;
Element books=document.getRootElement();//books找到
Element book=books.addElement("book");//在books下添加一个元素, 
Element title=book.addElement("title");//book下添加一个title节点
Element price=book.addElement("price");
title.setText("巴黎圣母院");//设置title名字
price.setText(String.valueOf(38.9));
}
public static void delete(Document document){
Element books=document.getRootElement();
Iterator<Element> it=books.elementIterator();
while(it.hasNext()){
Element book=it.next();
Iterator<Element> itSub=book.elementIterator();
while(itSub.hasNext()){
Element bField=itSub.next();
if("title".equals(bField.getName())&&"北京".equals(bField.getText())){
books.remove(book);
}
}
}
}
public static void update(Document document){
Element books=document.getRootElement();
Iterator<Element> it=books.elementIterator();
while(it.hasNext()){
Element book=it.next();
Iterator<Element> itSub=book.elementIterator();
while(itSub.hasNext()){
Element bField=itSub.next();
if("title".equals(bField.getName())&&"巴黎圣母院".equals(bField.getText())){
bField.setText("三国演义");
}
}
}
}
public static void check(Document document){
Element books=document.getRootElement();
Iterator<Element> it=books.elementIterator();
while(it.hasNext()){
Element book=it.next();
Iterator<Element> itSub=book.elementIterator();
while(itSub.hasNext()){
Element bField=itSub.next();
System.out.println(bField.getName()+" "+bField.getText());
}
}
}
public static void save(Document document) throws IOException{
//3.save;
OutputStream os=new FileOutputStream("e:\\books.xml");
OutputStreamWriter osw=new OutputStreamWriter(os, "utf-8");
XMLWriter writer=new XMLWriter(osw);
writer.write(document);
writer.close();
}

}

0 0