dom4j是我最喜欢的一套解析组件,操作简便而且效率高。有了它,dom和sax可以光荣退休了.
下面是dom4j生成xml文件的代码
package dom4j;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.UnsupportedEncodingException;import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter;public class dom4j_writeXML_02 {
public static void main(String args[]) throws Exception, Exception{
/**
* 创建文档对象
*/
Document document=DocumentHelper.createDocument();
/**
*在文档对象下增加根节点
*/
Element root =document.addElement("addressList");
/**
* 在每一个节点下增加子节点
*/
Element linkMan=root.addElement("linkMan");
Element name=linkMan.addElement("name");
/**
* 给name节点添加属性
*/
name.addAttribute("id", "I am attribute");
Element email=linkMan.addElement("email");
/**
* 给name节点设置文本
*/
name.setText("我是最强的");
/**
* 给email节点设置文本
*/
email.setText("ekdfj@163.com");
/**
* 设置漂亮的输出格式(也可以设置紧凑的输出格式)
*/
OutputFormat format = OutputFormat.createPrettyPrint();
/**
* 以漂亮的格式,将xml文件输出到d:\dom4j.xml文件中
*/
XMLWriter writer = new XMLWriter(
new FileOutputStream(new File("d:"+File.separator+"dom4j.xml")),format);
writer.write(document);
}
}
看看吧,是不是很方便,理解起来也很容易。真的很佩服设计者的技巧,他的addxxx()方法并不是返回空,而是返回一个节点。这样的话,我们就可以很容易的在某一个节点下增加子节点。
dom4j的读取xml能力也很强
package dom4j;
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;import java.io.*;
import java.util.Iterator;public class dom4j_ReadXML_01 {
public static void main(String args[]) throws DocumentException, Exception{
/**
* 创建一个解析器
*/
SAXReader reader=new SAXReader();
/**
* 解析xml文档
*/
Document document=reader.read("d:"+File.separator+"dom4j.xml");
/**
* 获得文本的根节点
*/
Element root=document.getRootElement();
/**
* 获得根节点下面的全部子节点
*/
Iterator linkMans=root.elementIterator();
/**
* 遍历节点输出
*/
while(linkMans.hasNext()){
Element linkMan=(Element)linkMans.next();
System.out.println(linkMan.elementText("name"));
Element name=linkMan.element("name");
System.out.println(name.attribute("id").getName()+"="+name.attributeValue("id"));
System.out.println(linkMan.elementText("email"));
}
}
}
老婆要求加的链接>>