5

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>

あなたの時間と助けに感謝します。

4

2 に答える 2

2

メソッドを評価するために間違った属性を渡しています。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);
}
于 2013-02-13T18:43:14.397 に答える
0

パーサーではなく、InputSource を xpath.evaluate() の 2 番目の引数として渡す必要があるように見えます。一般に、XPath はドキュメント ツリー全体をたどる必要がある場合があることに注意してください。そのため、特別に制限された場合を除いて、ストリーミング解析では機能しません。ドキュメント全体を読み取り、メモリ内ツリー モデルを構築して適用する必要があります。それへのXPath。

于 2013-02-07T02:23:10.267 に答える