2012-08-09 36 views
5

Estoy usando XmlPullParser para abrir un archivo y XPath para obtener la raíz. (Más adelante voy a modificar mi código para obtener el nodo idx)Error desconocido en xpath (usando xmlpullparser)

Sin embargo, estoy consiguiendo el error siguiente:

javax.xml.transform.TransformerException: Unknown error in XPath. 

He buscado en Internet, pero no he encontrado nada que pueda resolver este problema.

try{ 
    XmlPullParser xpp = getResources().getXml(R.xml.x1); 
    XPath xpath = XPathFactory.newInstance().newXPath(); 
    String askFor2 = "/root"; 
    NodeList creaturesNodes = (NodeList) xpath.evaluate(askFor2, xpp, XPathConstants.NODESET); 
    Log.d("", ""); 
} catch (Exception ex) { 
    String err = (ex.getMessage()==null)?"run thread failed":ex.getMessage(); 
    Log.e("bm run catch", err); 
} 

Mi archivo XML es

<?xml version="1.0"?> 
<root> 
    <child index="1"> 
     <idx index="1" /> 
     <idx index="2" /> 
     <idx index="3" /> 
     <idx index="4" /> 
     <idx index="5" /> 
     <idx index="6" /> 
     <idx index="7" /> 
    </child> 
</root> 

su tiempo y ayuda es muy apreciada.

Respuesta

0

Me parece que debería pasar un InputSource como el segundo argumento para xpath.evaluate(), no un analizador. Tenga en cuenta que XPath en general puede necesitar recorrer un árbol completo de documentos, por lo que, salvo en algunos casos especiales restringidos, no puede funcionar con un análisis de transmisión: debe leer todo el documento, construir un modelo de árbol en memoria y aplicar XPath a eso.

2

Está pasando el atributo incorrecto para evaluar el método. Intente utilizar InputSource,

try{ 
    XPath xpath = XPathFactory.newInstance().newXPath(); 
    InputSource is = new InputSource(getResources().openRawResource(R.raw.xm)); 
    String askFor2 = "/root"; 
    NodeList creaturesNodes = (NodeList) xpath.evaluate(askFor2, is, XPathConstants.NODESET); 
    Log.d("", ""); 
} catch (Exception ex) { 
    Log.e("bm run catch", err); 
} 
Cuestiones relacionadas