Неизвестная ошибка в xpath (с помощью xmlpullparser)

Я использую XmlPullParser чтобы открыть файл и XPath чтобы получить корень. (Позже я изменю свой код, чтобы получить узел idx )

Однако я получаю следующую ошибку:

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

Я искал в Интернете, но не нашел ничего, что могло бы решить эту проблему.

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

Мой XML-файл

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

Ваше время и помощь высоко оценены.

Для оценки метода вы передаете неправильный атрибут. Попробуйте использовать 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); } 

Мне кажется, что вы должны передавать InputSource в качестве второго аргумента в xpath.evaluate (), а не в синтаксический анализатор. Имейте в виду, что XPath вообще может потребоваться пройти полное дерево документов, поэтому, за исключением некоторых особых случаев с ограниченным доступом, он не может работать с потоковым анализом: вам нужно прочитать во всем документе, построить модель дерева в памяти и применить XPath к этому.