关于dom4j的解析

Posted on 2006-10-06 00:16 开关 阅读(420) 评论(0)  编辑  收藏 所属分类: XML

实际跟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 自动生成构造函数存根
 }

}


只有注册用户登录后才能发表评论。


网站导航: