java - Android - XPath 评估速度非常慢

标签 java android xml xpath vtd-xml

我正在使用 XPath 查询我的 XML 文件,该文件目前大约有 100KB

我正在迭代一个数组并查询列表中的每个值。

遗憾的是,在调试器下,单个查询大约需要 3-4 秒,而在禁用调试器的情况下,时间会稍微短一些。

有什么想法为什么这么慢吗?我使用 Galaxy S2 进行测试。

这是我的代码:

XPath xpath = XPathFactory.newInstance().newXPath();
DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance();
builderFactory.setNamespaceAware(true);
DocumentBuilder builder = builderFactory.newDocumentBuilder();

Document document = builder.parse(new File(file_on_internal_sd_url)));

int size = mPrefs.getInt("no_ids", 0);
for(int i=0;i<size;i++) {
    String id= mPrefs.getString("id_" + i, null);
    String expression = "/tag1/tag2[@id = '" + id+ "']";
    NodeList nodes = (NodeList) xpath.evaluate(expression, document, XPathConstants.NODESET);
    if(nodes.getLength()>0) {
        myElements.add((Element)nodes.item(0));
    }
}

更新

当我省略XPathConstants.NODESET时,评估很快就会完成,但我没有得到NodeList。它返回一个空字符串......

最佳答案

感谢@nvrmnd,我尝试了一下并找到了一种更好的解析器:

VTD-XML

这是一个example来自开发者。

但是这个Tutorial好多了...

关于java - Android - XPath 评估速度非常慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17704235/

相关文章:

java - 是否可以获得包含类(CDI)的引用?

java - JPA 并插入表的分区

javascript - Mirth Connect 和 HL7 v3 消息验证

java - 获取xml元素的文本内容

java - "var"变量命名

java - 在使用 JNA 的 Java 代码中使用 GetMessage 或 PeekMessage 的安全方法是什么?

android - 删除未使用的资源

java - Android Studio 中@override 的含义

尝试下载源代码时 Android repo init 失败

java - 在服务启动时更改图像