XML遍历

import java.io.File;
import java.util.Iterator;

import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.Node;
import org.dom4j.io.SAXReader;

public class XMLDom4j {
public static void main(String args[]){
    /*
    * 读取xml的流
    * SAXReader解析XML:如果XML很小,那么将整个XML读入内存,若很大,则解析一点读一点。
    * DOM解析XML:直接将整个XML看做一个对象读入内存
    */
    SAXReader reader = new SAXReader();
    try {
      /*把XML看作成一个对象*/
      Document doc = reader.read(new File("chenhuan.xml"));
      /*获取XML的根节点*/
      Element rootElement = doc.getRootElement();
      /*打印根节点的名称*/
      print(rootElement.getName());
      /*遍历根节点中的子节点*/
      Iterator<Element> iter = rootElement.elementIterator();
      while(iter.hasNext()){
          Element element = (Element)iter.next();
          print(element.getName());
          /*遍历子节点中的属性和值*/
          for(Iterator<Attribute> i = element.attributeIterator() ; i.hasNext();){
              Attribute attr = (Attribute)i.next();
              print(attr.getName()+"--"+attr.getValue());
          }
          /*遍历子节点中的子节点*/
          for(Iterator<Element> ii = element.elementIterator(); ii.hasNext();){
              Element element1 = (Element)ii.next();
              print(element1.getName());
          }
      }

      /*采用递归模式将所有节点都遍历出来*/
      treeWalk(rootElement);


    } catch (DocumentException e) {
        e.printStackTrace();
    }
}

public static void print(Object o){
    System.out.println(o);
}

public static void treeWalk(Element rootElement){
    print(rootElement.nodeCount());
    for(int i = 0 , size = rootElement.nodeCount() ; i < size ; i++){
    Node node = rootElement.node(i);
    if(node instanceof Element){
        System.out.println("node节点:"+node.getName());
        treeWalk((Element)node);
    }
   }
}
}

posted @ 2012-11-13 15:30  陈欢  阅读(224)  评论(0)    收藏  举报