2012-08-09 13 views
5

मैं रूट प्राप्त करने के लिए XPath फ़ाइल खोलने के लिए XmlPullParser का उपयोग कर रहा हूं। (बाद में मैं idx नोड पाने के लिए मेरे कोड को संशोधित करेगा)xpath (xmlpullparser का उपयोग करके) में अज्ञात त्रुटि

हालांकि, मैं निम्न त्रुटि हो रही है:

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 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() के दूसरे तर्क के रूप में पास करना चाहिए, न कि एक पार्सर। ध्यान रखें कि सामान्य रूप से XPath को पूरे दस्तावेज़ पेड़ पर चलने की आवश्यकता हो सकती है, इसलिए कुछ विशेष प्रतिबंधित मामलों को छोड़कर, यह स्ट्रीमिंग पार्स के साथ काम नहीं कर सकता है: आपको पूरे दस्तावेज़ में पढ़ने, एक मेमोरी पेड़ मॉडल बनाने और लागू करने की आवश्यकता है उस पर XPath।

2

आप विधि का मूल्यांकन करने के लिए गलत विशेषता उत्तीर्ण कर रहे हैं। इनपुट स्रोत का उपयोग करने का प्रयास करें,

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