Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Unknown error in xpath (using xmlpullparser)

I am using XmlPullParser to open a file and XPath to get the root. (Later I will modify my code to get the idx node)

However, I am getting the following error:

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

I've searched on the internet but haven't found anything that could resolve this issue.

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

My XML file is

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

Your time and help is highly appreciated.

like image 924
Abid Avatar asked Nov 04 '22 18:11

Abid


1 Answers

You are passing wrong attribute to evaluate method. Try using 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);
}
like image 153
ranjk89 Avatar answered Nov 08 '22 05:11

ranjk89