Posted on 2006-10-06 00:16
开关 阅读(429)
评论(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 自动生成构造函数存根
}
}