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,我尝试了一下,找到了更好的解析器:
这是来自devlopers的example.
但这Tutorial更好……
希望这有助于任何人像我一样沮丧……
标签:vtd-xml,android,java,xml,xpath 来源: https://codeday.me/bug/20191009/1875934.html