下面说下主要的实用方法
1: 读取并解析XML文档:
读写XML文档主要依赖于org.dom4j.io包,提供了DOMReader和SAXReader两类不同方式,调用方式一样。
// 从文件读取XML,输入文件名,返回XML文档
public Document read(String fileName) throws MalformedURLException, DocumentException {
SAXReader reader = new SAXReader();
Document document = reader.read(new File(fileName));
return document;
}
2:取得ROOT节点
如果要读取一个XML文件,最重要的就是要读取ROOT节点了,一切分析XML都是从ROOT节点开始。
public Element getRootElement(Document doc){
return doc.getRootElement();
}
3:遍历XML树,这里有二种方法
(1): 枚举
// 枚举所有子节点 for ( Iterator i = root.elementIterator(); i.hasNext(); ) {
Element element = (Element) i.next();
// do something
}
// 枚举名称为foo的节点
for ( Iterator i = root.elementIterator(foo); i.hasNext();) {
Element foo = (Element) i.next();
// do something
}
// 枚举属性
for ( Iterator i = root.attributeIterator(); i.hasNext(); ) {
Attribute attribute = (Attribute) i.next();
// do something
}
(2) : 递归
public void treeWalk() { treeWalk(getRootElement());
}
public void treeWalk(Element element) {
for (int i = 0, size = element.nodeCount(); i < size; i++) {
Node node = element.node(i);
if (node instanceof Element) {
treeWalk((Element) node);
} else { // do something....
}
}
}
4:字符串与XML的转换
// XML转字符串 Document document = ...;
String text = document.asXML();
// 字符串转XML
String text = James ;
Document document = DocumentHelper.parseText(text);
5. 创建XML
这里创建一个XML,没有写
public Document createDocument() { Document document = DocumentHelper.createDocument();
Element root = document.addElement(root);
Element author1 =
root
.addElement(author)
.addAttribute(name, James)
.addAttribute(location, UK)
.addText(James Strachan);
Element author2 =
root
.addElement(author)
.addAttribute(name, Bob)
.addAttribute(location, US)
.addText(Bob McWhirter);
return document;
}
6: XML 文件输出
FileWriter out = new FileWriter( foo.xml ); document.write(out);
DOM4j 的简单常用的方法上面总结了下,大家可以有一个印象,想要学的仔细了就要自己好好研究了,下面有一个以前写的小程序,实现了创建和编辑XML文件的功能。
package com.dom4j.test;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Iterator;
import java.util.List;
import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
public class NewXML {
public boolean newXMl(String fileName){
boolean returnValue=false;
//定义一个XML文档
Document docement=DocumentHelper.createDocument();
//设置XML文档的元素
Element rootElement=docement.addElement("DOM4J创建XML文档");
rootElement.addComment("镜花水月2007-4-24晚上创建");
Element nameElement=rootElement.addElement("镜花水月");
nameElement.addAttribute("名字","不告诉你");
Element schoolElement=nameElement.addElement("学校");
schoolElement.setText("西安翻译学院");
Element cityElement=rootElement.addElement("城市");
cityElement.setText("上海");
Element homeElement=cityElement.addElement("住址");
homeElement.setText("徐家汇");
//创建XML文档
try {
OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding("GBK");
XMLWriter writer=new XMLWriter(new FileWriter(new File(fileName)),format);
writer.write(docement);
writer.close();
return returnValue=true;
} catch (IOException e) {
e.printStackTrace();
}
return returnValue;
}
public boolean update(String fileName,String newFileName){
boolean returnValaue=false;
SAXReader reader=new SAXReader();
try {
Document docement=reader.read(new File(fileName));
List list=null;
list=docement.selectNodes("/DOM4J创建XML文档/镜花水月/@名字");
Iterator it=list.iterator();
while(it.hasNext()){
Attribute attribute=(Attribute) it.next();