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);
    }
   }
}
}

转载于:https://www.cnblogs.com/ChenHuanBlog/archive/2012/11/13/2768114.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值