2012-08-09 32 views
5

Używam XmlPullParser do otwarcia pliku i XPath, aby uzyskać root. (Później będę modyfikować swój kod aby otrzymać węzeł idx)Nieznany błąd w xpath (przy użyciu xmlpullparser)

Jestem jednak otrzymuję następujący błąd:

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

Szukałem w internecie ale nie znalazłem niczego, co mogłoby rozwiązać ten problem kwestia.

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); 
} 

Mój plik XML jest

<?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> 

Twój czas i pomoc jest bardzo ceniona.

Odpowiedz

0

Wygląda na to, że należy przekazywać źródło danych wejściowych jako drugi argument do funkcji xpath.evaluate(), a nie analizatora składni. Należy pamiętać, że XPath generalnie może wymagać przejścia całego drzewa dokumentu, więc z wyjątkiem pewnych szczególnych zastrzeżonych przypadków, nie może pracować z analizą strumieniowania: należy przeczytać w całym dokumencie, skonstruować model drzewa w pamięci i zastosować XPath do tego.

2

Przekazujesz nieprawidłowy atrybut do oceny metody. Spróbuj użyć 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); 
} 
Powiązane problemy