मेरे पास निम्न समस्या है: मेरे पास बहुत बड़ी एक्सएमएल फाइलें हैं (जैसे 300+ मेग्स), और मुझे उनके कुछ मान डीबी में जोड़ने के लिए उन्हें पार्स करने की आवश्यकता है। इन फ़ाइलों की संरचना भी बहुत जटिल है। मैं स्टैक्स पार्सर का उपयोग करना चाहता हूं क्योंकि यह एक समय में एक्सएमएल फाइल के केवल हिस्सों को पुल-पार्सिंग (और इस प्रकार प्रोसेसिंग) की अच्छी संभावना प्रदान करता है, और इस प्रकार पूरी चीज को स्मृति में लोड नहीं कर रहा है, लेकिन दूसरी ओर मूल्यों को प्राप्त करना स्टैक्स (कम से कम इन एक्सएमएल फाइलों पर) बोझिल है, मुझे कोड का एक टन लिखना होगा। इस बाद के दृष्टिकोण से यह मेरी मदद करेगा अगर मैं एक्सएमएल फ़ाइल को जावा ऑब्जेक्ट्स (जैसे जेएक्स-बी करता है) में मार्शल कर सकता हूं, हालांकि यह पूरी फाइल को ऑब्जेक्ट इंस्टेंस के एक टन को एक बार में लोड करेगा।जावा ऑब्जेक्ट्स को बहुत बड़ी एक्सएमएल फाइलों और मार्शलिंग को पार्स करना
मेरा सवाल यह है कि फ़ाइल को अनुक्रमिक रूप से खींचने (या केवल आंशिक रूप से विश्लेषण) करने का कोई तरीका है, और उसके बाद केवल उन हिस्सों को जावा ऑब्जेक्ट्स में मार्शल करें ताकि मैं स्मृति पर बगैर आसानी से उनसे निपट सकूं?
आपकी जांच को जानना अच्छा है। बस सोच रहा है कि यह कैसे है (इस पोस्ट में सोलन) मैंने जो पोस्ट किया है उससे अलग है? – Kashyap
खैर, ईमानदारी से यह बड़े ढांचे, भाग आलस्य का हिस्सा था :) (जिनमें से दोनों बुरे और खेदजनक हैं)। सबसे पहले, दस्तावेज ईएमएफ से एक सुंदर शामिल ढांचे की तरह लगता है, यह सिर्फ एक्सएमएल प्रसंस्करण के लिए नहीं बल्कि अन्य चीजों के टन के लिए है, और जब भी संभव हो तो मैं ऐसे भारी ढांचे से बचने की कोशिश करता हूं (यह सिर्फ व्यक्तिगत वरीयता है, मैं नहीं हूं यह सामान्य रूप से करना बुरा है)। दूसरा, मैं आलसी हूं, और ईएमएफ गैर-मानक एक्सएमएल पार्सिंग एपीआई का उपयोग करता है जो मुझे नहीं पता है क्योंकि मैंने मानक जावा एक्सएमएल एपीआई के साथ समाधान को प्राथमिकता दी है। –
दरअसल, क्या आपको ईएमएफ पसंद आया या नहीं, मैंने इसका उपयोग नहीं करने की सिफारिश की ("** क्योंकि ईएमएफ इतनी छोटी समस्या के लिए हथौड़ा बहुत बड़ा है। **") जब तक कि आपके पास कोई विकल्प न हो। और पार्सर को दोबारा उद्धृत करने के लिए "तो ** जो कुछ भी आप चाहते हैं उसका उपयोग करके बस पार्स करें, कुछ स्ट्रिंगस्ट्रीम बनाएं या प्रत्येक के लिए लूप में कुछ बनाएं और ** जेएक्स-बी या ईएमएफ को पास करें। **" –
Kashyap