2009-12-18 15 views
10
पर एक्सएमएल (org.w3c.Document) पार्स करने के लिए

किसी के लिए एक स्पष्टीकरण के लिए मुझे बिंदु या मुझे समझा कैसे मैं आसानी से XML को पार्स और केवल Android ओएस लिब्ज़ का उपयोग कर Android पर एक w3c.Document के मूल्यों को प्राप्त कर सकते हैं कर सकते हैं ?रास्ता एंड्रॉयड

मैं में तो सामान्य जावा SAX एक के ऊपर dom4j के कार्यान्वयन का उपयोग करने की कोशिश की है, लेकिन यह बहुत धीमी गति से :-(

उत्तर

11

आप निश्चित प्रदान की SAX API का उपयोग करना चाहिए। एंड्रॉयड XML पार्स एपीआई ढेर मेरी राय मैं सामान्य जावा सैक्स एपीआई का उपयोग करता हूं और इस तरह आपको सामान्य जावा डेस्कटॉप प्रोजेक्ट के रूप में अपने कोड का परीक्षण करने की क्षमता मिलती है।

एक्सएमएल पार्सिंग हमेशा धीमी होती है और इन सैक्स पार्सर्स का उपयोग करना उतना ही अच्छा होता है जितना कि यह हो जाता है (जब तक आप नए सिरे से कस्टम पार्सर लिखने) सलाह के शब्द:। स्ट्रिंग तुलना कम करने के लिए प्रयास करें और की लंबी श्रृंखला के बजाय HashMaps इस्तेमाल करने की कोशिश करता है, तो (token.isEqual (CONSTANT_TOKEN)) ;.

यहाँ जावा XML पार्सिंग के कुछ उदाहरण हैं: http://java.sun.com/developer/codesamples/xml.html#sax

एंड्रॉयड XML API कथात्मक है, प्रतिमान थोड़ी अलग इसलिए मामले में आप उस के साथ जा रहा तय है, जानने के लिए कुछ उदाहरण को पढ़ने के लिए तैयार रहना अपने तरीके।

अंत में, हो सकता है 2 महीने पहले मैं एक चार्ट बेंच मार्किंग डोम SAX बनाम एंड्रॉयड XML API बनाम (मैं काफी अब लिंक मिल नहीं कर सकते हैं) को देखा। निष्कर्ष यह था कि डीओएम अब तक का सबसे धीमा था और एसएएक्स शीर्ष था लेकिन एंड्रॉइड के एक्सएमएल कार्यान्वयन पर भारी अंतर से नहीं।

+1

हाय ruibm भी मेरे लिए उपयोगी है .. क्या आप दिखा सकते हैं कि हालात की लंबी श्रृंखला के बजाय हैशैप्स का उपयोग कैसे करें ... – Dinash

15

यहाँ एक article at Developer.com डोम, SAX के प्रदर्शन की तुलना और Android पर पारसर्स खींचो है। यह डोम पार्सर को सबसे धीमी गति से पाया गया, फिर पुल पार्सर और सैक्स पार्सर अपने परीक्षण में सबसे तेज है।

आप इसे विभिन्न विकल्पों बेंचमार्किंग जो आपके लिए सबसे अच्छा काम करता है देखने के लिए लायक हो सकता है एक अपने आवेदन में पार्स करने का एक बहुत कुछ कर रही हो करने के लिए जा रहे हैं।

मैंने XmlPullParserXmlResourceParser के माध्यम से उपयोग किया है और पाया है कि यह अच्छी तरह से काम करता है और उपयोग करना आसान था।

यह एक्सएमएल लौटने वाली घटनाओं के माध्यम से काम करता है जो आपको बताता है कि इसमें क्या पाया गया है।

आप इसका इस्तेमाल करते हैं, तो आपके कोड कुछ इस तरह दिखेगा:

XmlResourceParser parser = context.getResources().getXml(R.xml.myfile); 

try { 
    int eventType = parser.getEventType(); 

    while (eventType != XmlPullParser.END_DOCUMENT) { 
     String name = null; 

     switch (eventType){ 
      case XmlPullParser.START_TAG: 
       name = parser.getName().toLowerCase(); 

       if (name.equals(SOME_TAG)) { 
        for (int i = 0;i < parser.getAttributeCount();i++) { 
         String attribute = parser.getAttributeName(i).toLowerCase(); 

         if (attribute.equals("myattribute")) { 
          String value = parser.getAttributeValue(i); 
         } 

        } 
       } 

       break; 
      case XmlPullParser.END_TAG: 
       name = parser.getName(); 
       break; 
     } 

     eventType = parser.next(); 
    } 
} 
catch (XmlPullParserException e) { 
    throw new RuntimeException("Cannot parse XML"); 
} 
catch (IOException e) { 
    throw new RuntimeException("Cannot parse XML"); 
} 
finally { 
    parser.close(); 
} 

आप XML कि नहीं संसाधन फ़ाइल से आप एक नया XmlPullParserXmlPullParserFactory class का उपयोग कर बना सकते हैं पार्स और फिर फोन setInput() method चाहते हैं ।

+0

क्या XmlResourceParser के साथ दूरस्थ XML को पार्स करने का कोई तरीका है? – Thys

+0

XmlResourceParser XmlPullParser का उप-वर्ग है। मुझे इसके बारे में बात करनी चाहिए थी।मैंने यह दिखाने के लिए जवाब दिया है कि आप एक्सएमएलप्लपर्सर के साथ रिमोट एक्सएमएल को कैसे पार्स कर सकते हैं। –

+0

यूप, बस पुलपार्सर का सीधे उपयोग करें: http://developer.android.com/reference/org/xmlpull/v1/XmlPullParser.html – rui

1

हम भी एंड्रॉयड XML पार्सिंग हालात में XPath उपयोग कर सकते हैं ..

यह उपयोगी होता है जब आप किसी सरणी के रूप में डेटा का एक बहुत पार्स करने के लिए आ रहे हैं।

चेक बाहर एंड्रॉयड से XML सामग्री पार्स करने में XPath ट्यूटोरियल के लिए इस Link

आनंद लें !!

संबंधित मुद्दे