如何仅使用ELEMENT_NODE类型获取子节点

时间:2013-11-20 07:13:53

标签: java xml dom

我正在使用java DOM解析xml文档,我需要让每个节点都做一些事情。

我有这段代码:

public void analyze_file(Node node){
        if(node.getNodeType() != Node.DOCUMENT_NODE){
            //do something
        }
        NodeList list = node.getChildNodes();
        for(int i=0; i<list.getLength(); i++){
            if(list.item(i).getNodeType() == Node.ELEMENT_NODE){
                analyze_file(list.item(i));
            }
        }
}

问题是,我的xml文件非常大(&gt; 30000行),上面的代码需要太多时间来检查节点是ELEMENT_NODE类型还是不。我看到如果程序在到达最后一个ELEMENT_NODE节点后停止,则执行时间会非常短。

有没有办法让所有类型都只有ELEMENT_NODE的子节点?

例如:NodeList list = node.getElementChildNodes();

感谢您的帮助!

1 个答案:

答案 0 :(得分:6)

node.getElementsByTagName("*")

From JavaDoc:以文档顺序返回具有给定标记名称的所有后代元素的NodeList。名称 - 要匹配的标记的名称。特殊值“*”匹配所有标签。