//获取Document下的根节点 public Element getRootElement(Document document) throws Exception { return document.getRootElement(); }
//方法一:层层解析 public void readElement(Element rootElement) throws Exception{ System.out.println(rootElement.getName()); for(Iterator iterator=rootElement.elementIterator();iterator.hasNext();){ Element element =(Element)iterator.next(); System.out.println(element.getName()+element.getText()); for(Iterator iterator2=element.elementIterator();iterator2.hasNext();){ Element element2=(Element)iterator2.next(); System.out.println(element2.getName()+element2.getText());
package dom4j;import java.io.File;
import java.util.Iterator;import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.Node;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
public class Dom4jParseXml { public static void main(String[] args)throws Exception {
Dom4jParseXml dom4j=new Dom4jParseXml();
Document document=dom4j.getDocument("ACCP.xml");
Element rootElement=dom4j.getRootElement(document);
//方法一:普通的层层解析
// dom4j.readElement(rootElement);
//方法二:递归方法
// dom4j.readInstanceof(rootElement);
// 方法三:采用Dom4j带的Visitor模式进行解析
// rootElement.accept(new MyVistor());
// 方法四:采用美化格式的输出
dom4j.parseFormat(document);
} public void parseFormat(Document document)throws Exception{
OutputFormat outputFormat = OutputFormat.createPrettyPrint();
// OutputFormat outputFormat=OutputFormat.createCompactFormat();
outputFormat.setEncoding("GB2312");
XMLWriter writer=new XMLWriter(System.out,outputFormat);
writer.write(document);
System.out.println("over");
}
//通过Dom4j的解析器进行Document的解析操作
public Document getDocument(String filename)throws Exception{
SAXReader saxReader=new SAXReader();
Document document=saxReader.read(new File(filename));
return document;
}
//获取Document下的根节点
public Element getRootElement(Document document) throws Exception {
return document.getRootElement();
}
//方法一:层层解析
public void readElement(Element rootElement) throws Exception{
System.out.println(rootElement.getName());
for(Iterator iterator=rootElement.elementIterator();iterator.hasNext();){
Element element =(Element)iterator.next();
System.out.println(element.getName()+element.getText());
for(Iterator iterator2=element.elementIterator();iterator2.hasNext();){
Element element2=(Element)iterator2.next();
System.out.println(element2.getName()+element2.getText());
}
}
}
//方法二:递归方法
public void readInstanceof(Element element)throws Exception{
System.out.println(element.getName());
for(Iterator iterator=element.elementIterator();iterator.hasNext();){
Node node=(Node)iterator.next();
if(node instanceof Element){
readInstanceof((Element)node);
}
System.out.println("text:::"+((Element)node).getText());
}
}}
import org.dom4j.Element;
import org.dom4j.VisitorSupport;public class MyVistor extends VisitorSupport {
public void visit(Attribute node){
System.out.println("有属性:"+node.getName()+node.getText());
}
public void visit(Element node){
System.out.println("元素是:"+node.getName()+"::元素是"+node.getText());
}
}