2009-08-29 10 views
21

मैं इंटरनेट पर एक एपीआई का उपयोग कर रहा हूं जो एक्सएमएल फाइलों के लिए वस्तुओं को मार्शल कर रहा है। यह देखते हुए कि एक्सएसडी फाइलें भी उपलब्ध हैं, मैं फ़ाइलों को डाउनलोड करने के बाद उन्हें जावा ऑब्जेक्ट्स में वापस अनमशेल करने में सक्षम होना चाहता हूं।एंड्रॉइड में जावा ऑब्जेक्ट्स में एक्सएमएल फाइलों को अनारक्षित करना?

इसके आसपास देखने के बाद JAXB जावा में ऐसा करने के लिए डिफ़ॉल्ट लाइब्रेरी है, लेकिन जैसा कि मैं मोबाइल ऐप विकसित कर रहा हूं, अतिरिक्त 8.6 एमबी निर्भरता केवल स्वीकार्य नहीं है। मुझे XStream भी मिला, लेकिन यह अभी भी 7.9 एमबी पर है।

एंड्रॉइड एसडीके के आसपास पोकिंग ऐसा लगता है कि उपलब्ध एकमात्र असली एक्सएमएल पार्सर SAX है।

  1. वहाँ एक रास्ता SAX मैं क्या चाहते हो पाने के लिए है:

    तो यहाँ सवाल है?

  2. क्या एंड्रॉइड एसडीके में कोई और उपकरण है जिसे मैंने याद किया है?
  3. क्या कोई अन्य लाइब्रेरी है (यह काफी छोटा है) जो यह करेगा?

धन्यवाद।

उत्तर

2

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

+0

हाँ ... विकल्प के लिए खोज शुरू करने का मुख्य कारण यह है कि "ऑब्जेक्ट ग्राफ" वास्तव में बहुत जटिल है। मैं देख रहा हूँ ... धन्यवाद। –

0

एसएक्स के अलावा एंड्रॉइड एसडीके में, डोम पार्सर और एक्सएमएल पुलपार्स भी उपलब्ध हैं।

यदि आप अपने आप में पूरी तरह से मेमोरी डेटा संरचना बनाना नहीं चाहते हैं, तो डोम आपके दर्द को कम कर सकता है - जब तक गति और मेमोरी पदचिह्न वह कीमत है जिसे आप भुगतान करना चाहते हैं।

19

एक ढांचा है जो एंड्रॉइड पर काम करेगा जो जेएक्सबी के समान तरीके से एनोटेशन का उपयोग करके एक्सएमएल बाध्यकारी करता है, इसे सरल कहा जाता है और 270K से कम समय में वजन होता है, यह XStream के लिए आवश्यक चीज़ों का एक छोटा सा अंश है या JAXB। इसके अलावा, इसमें कोई बाहरी निर्भरता नहीं है, केवल एक जार है और सब कुछ काम करना चाहिए। नीचे जावा के लिए सरल, और एक्सएमएल क्रमबद्धता फ्रेमवर्क का एक लिंक है।

http://simple.sourceforge.net

यह भी वस्तु रेखांकन में चक्र संभाल कर सकते हैं।

+4

यह लाइब्रेरी अच्छा लगता है, मैं अपने एंड्रॉइड ऐप्स के साथ इसका परीक्षण करूंगा, हालांकि, इस प्रारूप में एक्सएसडी से जावा कक्षाएं बनाने के लिए एक उपकरण है? – yeradis

+1

आप इसे इस टिप्पणी में जोड़ना चाहेंगे: http://www.javacodegeeks.com/2011/02/android-xml-binding-simple-tutorial.html –

+5

और मैंने अभी एक सरल ब्लॉग पोस्ट लिखा है जिसमें सरल एंड्रॉइड प्रोजेक्ट यहां: http://robertmassaioli.wordpress.com/2011/04/21/simple-xml-in-android-1-5-and-up/ –

5

एक्सस्ट्रीम 431k है। आपको अपने एंड्रॉइड एप्लिकेशन में पूरे वितरण ज़िप की आवश्यकता नहीं है। यदि आप तेजी से प्रदर्शन के लिए xpp3 पुल पार्सर जोड़ते हैं तो यह 24k जोड़ देगा। यह आपका पूरा पैकेज 455k पर ले जाएगा। अभी भी आदर्श नहीं है, लेकिन मैं इसके साथ रह सकता हूं।

1

kxml2-2.2.2 एक अच्छा छोटा lib (43K) है जो जावाएमई पर काम करता है, पार्सिंग खींचता है और मैंने इसे सफलतापूर्वक उपयोग किया है। इसकी एकमात्र निर्भरता xmlpull है, जो 8k है। वह छोटे के लिए कैसा है?

चेतावनी यह है कि यह किसी बाध्यकारी जादू नहीं करता है।

0

हमारे पास एक्सबिंडर नामक एक उत्पाद है जो एक्सएसडी से कक्षाएं और एनकोड/डीकोड कोड उत्पन्न करता है। संस्करण 2.1 में लगभग 187 के बारे में लगता है। संस्करण 2।2 (अक्टूबर 2010 में होने के कारण) में लगभग 101K लगता है (और v2.1 से एंड्रॉइड के साथ उपयोग करना कुछ आसान है)। इसे here देखें।

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