實際跟jdom 有相似的地方 主要是
JDOM用SAXBuilder
DOM4J用SAXReader
形成doc 然后
輸出的方式也不太一樣
jdom用XMLOutput
生成格式
然后又xop.setput(doc,os)
把輸入流和doc當作參數
而
dom4j則是
創建一個 XMLWriter(os,format)
format是格式
然后由書寫器書寫(doc)
writer.writer(doc)
例如:dom4j的code 為:
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.io.UnsupportedEncodingException;
import java.net.MalformedURLException;
import java.util.Iterator;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
public class parsedom4j {
?/**
? * @param args
? */
?public static void main(String[] args) {
??// TODO 自動生成方法存根
??parsedom4j j=new parsedom4j();
??j.delete();
??
?}
?public void update(){
?? SAXReader parser=new SAXReader();
?? String path="D:/Example10.xml";
?? File file=new File(path);
???????? try {
??? Document doc=parser.read(path);
???Element root=doc.getRootElement();
???Iterator iter=root.elementIterator();
???while(iter.hasNext()){
????Element child=(Element)iter.next();
????Iterator childchilds=child.elementIterator();
????boolean isCorrect=false;
????while(childchilds.hasNext()){
?????Element childchild=(Element)childchilds.next();
?????if(childchild.getName().equalsIgnoreCase("title")&&childchild.getTextTrim().equalsIgnoreCase("b")){
?????? isCorrect=true;
?????}if(childchild.getName().equalsIgnoreCase("email")&&isCorrect)
?????{
??????? childchild.setText("西安@163.com");?
??????}
????}
???}
???OutputFormat format=new OutputFormat();
???format.setEncoding("gb3212");
???format.setNewlines(true);
???????? OutputStream os=new FileOutputStream(path);
???XMLWriter writer=new XMLWriter(os,format);
???writer.write(doc);
???os.close();
???writer.close();
???
???
??} catch (MalformedURLException e) {
???// TODO 自動生成 catch 塊
???e.printStackTrace();
??} catch (Exception e) {
???// TODO 自動生成 catch 塊
???e.printStackTrace();
??}
?}
?
?public void delete(){
??Element de=null;
? SAXReader reader=new SAXReader();
? String path="D:/Example10.xml";
? Document doc;
?try {
??doc = reader.read(path);
??Element root=doc.getRootElement();
??List children=root.elements();
??for(int i=0;i<children.size();i++){
???Element child=(Element)children.get(i);
???List childchilds=child.elements();
???for(int j=0;i<childchilds.size();j++){
???Element?e=(Element)childchilds.get(i);
???if(e.getName().equalsIgnoreCase("email")){
????de=e;
????childchilds.remove(j);
???}
???}
??}
?} catch (DocumentException e) {
??// TODO 自動生成 catch 塊
??e.printStackTrace();
?}
????
?
???
???? ?
????
??
?}
???
???
???
?
?public parsedom4j() {
??super();
??// TODO 自動生成構造函數存根
?}
}