java - 如何仅获取 ELEMENT_NODE 类型的子节点

标签 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 文件非常大(> 30000 行),上面的代码需要太多时间来检查节点是否属于 ELEMENT_NODE类型与否。我看到如果程序在到达最后一个 ELEMENT_NODE 节点后停止,执行时间会非常短。

有什么方法可以获取所有类型为 ELEMENT_NODE 的子节点吗?

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

感谢您的帮助!

最佳答案

node.getElementsByTagName("*")

来自 JavaDoc:按文档顺序返回具有给定标签名称的所有后代元素的节点列表。名称 - 要匹配的标签的名称。特殊值“*”匹配所有标签。

关于java - 如何仅获取 ELEMENT_NODE 类型的子节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20089661/

相关文章:

javascript - 如何使用 jQuery 和 Javascript 在 HTML 中一次性更改所有按钮的 InnerHTML?

java - 有多少数据可以存储到 Google App Engine 应用程序中?

java - Castor 为 xsd 中的整数类型生成 BigDecimal 类型

php - XML 解析速度加快。 PHP

Android Annotations + RestTemplate - 获取响应 xml 作为字符串

Java:迭代 org.w3c.dom.Document 中所有元素的最有效方法?

javascript - 如何使用javascript将数据存储在xml文件中?

java - OBJ 加载 - 奇怪的法线/uv

java - 无需为每个文件调用登录即可签署多个 PDF

java - 实现条件线程屏障的最佳方式