Document.selecNodesString e在android 1.6上返回java.lang.VerifyError

问题描述

|| 以下方法接收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;

}
    

解决方法

        我遇到了同样的问题。对于那些感兴趣的人,这是我解决的方法。除了dom4j之外,您还需要安装jaxen才能使XPath在android中工作。下载Jaxen,添加jaxen * .jar以构建路径,这应该可以解决您的问题。在此处获取更多信息释放的力量:使用Dom4j和JaxeIn的Android上的XML + XPath。如果您打算使用2.2以下的XPath,这将很有用。 Android 2.2具有内置的XPath功能