2011-06-23 63 views
1

以下方法接受XML文件和Xpath表達式,並將結果作爲字符串數組返回。它意味着使用API​​級別4(Android 1.6)在Android設備上運行。問題是我在模擬器上運行時總是收到java.lang.VerifyError。Document.selecNodes(String e)在Android 1.6上返回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

我面臨同樣的問題。對於那些有興趣的人,這是我如何解決它。除了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功能

相關問題