2010-05-23 18 views
10

मैं पुल पार्सर का उपयोग कर संपत्ति फ़ोल्डर में स्थानीय XML फ़ाइल को कैसे पार्स कर सकता हूं? मैं काम करने के लिए खींच पार्सर नहीं मिल सकता है। यह हमेशा एक आईओ अपवाद फेंकता है। मुझे लगता है कि मुझे फ़ाइल का मार्ग नहीं मिल सकता है, या फ़ाइल से कनेक्ट नहीं हो सकता है।xml पुल पार्सर संपत्ति xml

+0

आप पारसर्स खींचो के अलावा अन्य पर विचार करेंगे? –

उत्तर

22

mixm,

मैं दोनों 'संपत्ति' और 'रेस' से एक स्थानीय फ़ाइल को लोड करने के लिए, लेकिन आपके सवाल का जवाब देने के लिए विभिन्न तरीकों से कर रही थी पूछा के रूप में (के रूप में कोई और है लगता है):

try { 
     XmlPullParserFactory factory = XmlPullParserFactory.newInstance(); 
     factory.setValidating(false); 
     XmlPullParser myxml = factory.newPullParser(); 

फिर xml फ़ाइल खोलने के लिए और के रूप में स्थापित:

पहले, या तो सुनिश्चित करें कि आपके एक्सएमएल परीक्षण से पहले मान्य है या सत्यापन बंद कर देते हैं, यह आप कैसे और एक ही समय में एक पुल पार्सर का दृष्टांत कर सकते हैं आपके पुल पार्सर में इनपुट:

 InputStream raw = getApplicationContext().getAssets().open("simple.xml"); 
     myxml.setInput(raw, null); 

अब सेटअप अपने पुल पाश (या अन्य, आप खींच या नहीं टाल करते करना चाहते हैं पर निर्भर करता है, कि अपने डिजाइन फैसले है:

 int eventType = myxml.getEventType(); 
     while(eventType != XmlPullParser.END_DOCUMENT) { 
      if(eventType == XmlPullParser.START_DOCUMENT) { 

       Log.d(MY_DEBUG_TAG, "In start document"); 
      } 
      else if(eventType == XmlPullParser.START_TAG) { 
       Log.d(MY_DEBUG_TAG, "In start tag = "+myxml.getName()); 
      } 
      else if(eventType == XmlPullParser.END_TAG) { 
       Log.d(MY_DEBUG_TAG, "In end tag = "+myxml.getName()); 

      } 
      else if(eventType == XmlPullParser.TEXT) { 
       Log.d(MY_DEBUG_TAG, "Have text = "+myxml.getText()); 
      } 
      eventType = myxml.next(); 
     } 
    } catch (XmlPullParserException e) { 

नोट myxml.getEventType(), तो आप ऐसा करने के लिए प्राप्त करने की आवश्यकता पार्स जा रहा है और आप किस प्रकार की घटनाओं को खींच रहे हैं उसे संभालें। नोट: पठनीयता के लिए छोड़े गए ब्लॉक पकड़ें।

, 2.1 पर ऊपर परीक्षण आशा है कि यह मदद करता है फ्रैंक