以下方法接受XML文件和Xpath表达式,并将结果作为字符串数组返回。它意味着使用API级别4(Android 1.6)在Android设备上运行。问题是,当它在模拟器上运行时,我一直得到java.lang.VerifyError。
任何可能出错的想法?
@SuppressWarnings("unchecked")
private String[] evaluate(File file, String exp) {
String[] values = null;
try{
SAXReader reader = new SAXReader();
//new line added because xpath not supported on oppaz android 1.6
org.dom4j.Document doc = reader.read(file);
java.util.List<Node> nl = null;
try{
//An error is always generated here java.lang.VerifyError
nl = doc.selectNodes(exp);
}
catch(java.lang.VerifyError e){
System.out.println("The following error occurred Mayne");
e.printStackTrace();
}
Object[] obj = nl.toArray();
int j = obj.length;
//Find out how many nodes were returned
values =new String[j];
for(int i=0;i<j;i++){
Element element = (Element) nl.get(i);
NodeList nl2 = element.getChildNodes();
String value = ((Node) nl2.item(0)).getNodeValue();
values[i] = value;
}
}
catch(Exception e){
e.printStackTrace();
}
return values;
}
答案 0 :(得分:1)
我遇到了同样的问题。对于那些感兴趣的人,这是我如何解决它。除了dom4j之外,你还需要有jaxen来让XPath在android中运行。下载Jaxen,将jaxen * .jar添加到构建路径,这应该可以解决您的问题。更多信息The Force Unleashed: XML+XPath On Android Using Dom4j And JaxeIn。如果您计划使用低于2.2的XPath,这将非常有用。 Android 2.2具有内置XPath功能