编程语言
首页 > 编程语言> > java – Android – XPath评估非常慢

java – Android – XPath评估非常慢

作者:互联网

我正在使用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

这是来自devlopers的example.

但这Tutorial更好……

希望这有助于任何人像我一样沮丧……

标签:vtd-xml,android,java,xml,xpath
来源: https://codeday.me/bug/20191009/1875934.html