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