2012-08-09 9 views
5

ファイルを開くにはXmlPullParserを使用し、ルートを取得するにはXPathを使用しています。xpath(xmlpullparserを使用)で不明なエラー

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

私は、インターネット上で検索したが、これを解決する可能性が何かを発見していない:私は次のエラーを取得しています、しかし

を(その後、私はidxノードを取得するために私のコードを変更します)問題。

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> 

あなたの時間であり、ヘルプは高く評価されています。

答えて

0

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

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