Document.selecNodes(String e)在android 1.6上返回java.lang.VerifyError

时间:2011-06-23 22:46:14

标签: xml xpath emulation

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

}

1 个答案:

答案 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功能