मेरे पास एक बड़ी एक्सएमएल फ़ाइल है जिसमें कई उप तत्व हैं। मैं कुछ xpath प्रश्नों को चलाने में सक्षम होना चाहता हूँ। मैंने जावा में vtd-xml का उपयोग करने की कोशिश की, लेकिन मुझे कभी-कभी आउटफमेमरी त्रुटि मिलती है, क्योंकि एक्सएमएल स्मृति में फिट होने के लिए इतना बड़ा है। क्या इस तरह के बड़े एक्सएमएल की प्रसंस्करण का एक वैकल्पिक तरीका है।बड़ी एक्सएमएल फाइलों को संसाधित करना
उत्तर
कोशिश http://code.google.com/p/jlibs/wiki/XMLDog
यह एक्सएमएल दस्तावेजों के इन-स्मृति प्रतिनिधित्व बनाने के बिना सैक्स का उपयोग कर xpaths निष्पादित करता है।
बहुत ही कुशल जब बड़ी फ़ाइलों
का उपयोग करें आप सीधे सैक्स स्ट्रीम के साथ XPath का उपयोग नहीं कर सकते (प्रत्येक क्वेरी के लिए पूरी फ़ाइल को फिर से पार्स करने से कम)। –
@Glenn Maynard - लेकिन निश्चित रूप से OP * को प्रत्येक क्वेरी (या प्रश्नों के बैच) के लिए फ़ाइल को दोबारा पोस्ट करना होगा। स्मृति में फिट करने के लिए डोम बहुत बड़ा है। –
क्या आप अभी क्या करने की कोशिश कर रहे हैं के साथ काम कर रहा है? इसकी आवाज़ से आप एक डोम आधारित पार्सर का उपयोग करने की कोशिश कर रहे हैं, जो अनिवार्य रूप से संपूर्ण XML फ़ाइल को स्मृति में डीओएम प्रतिनिधित्व के रूप में लोड करता है। यदि आप एक बड़ी फ़ाइल से निपट रहे हैं, तो आप एक SAX पार्सर का उपयोग करना बंद कर देंगे, जो स्ट्रीमिंग फैशन में XML दस्तावेज़ को संसाधित करता है।
मैं व्यक्तिगत रूप से इसके लिए StAX की अनुशंसा करता हूं।
क्या आपने मानक vtd या विस्तारित VTD-xml का उपयोग किया था? यदि आप विस्तारित एक्सएमएल का उपयोग करते हैं तो आपके पास मेमोरी मैपिंग का उपयोग करने का विकल्प है ... क्या आपने कोशिश की?
XPath का उपयोग करना एक बहुत अच्छा विचार नहीं हो सकता है यदि आप एक लंबे समय तक रहने वाले अनुप्रयोग में गतिशील रूप से कई अभिव्यक्तियों को संकलित करने की योजना बनाते हैं।
मुझे पूरी तरह से यकीन नहीं है कि XPath का जावा संस्करण कैसे काम करता है, लेकिन .NET XPath में एक गतिशील असेंबली संकलित करता है और फिर इसे ऐप डोमेन में जोड़ता है। अभिव्यक्ति के बाद के उपयोग अब विधानसभा में लोड असेंबली को देखते हैं।
एक मामले में, जहां मैं XPath का उपयोग कर रहा था, यह एक ऐसी स्थिति का कारण बनता है जहां मुझे लगता है, इस प्रकार की तंत्र स्मृति स्मृति रिसाव के समान स्मृति को भरने में धीमा हो रहा था।
मेरा सिद्धांत यह है कि प्रत्येक अभिव्यक्ति को उपयोगकर्ता के मानों का उपयोग करके संकलित किया गया था, इसलिए प्रत्येक संकलित अभिव्यक्ति अद्वितीय थी, इसलिए एक नई अभिव्यक्ति संकलित की गई और ऐप डोमेन में जोड़ा गया।
चूंकि आप संपूर्ण ऐप डोमेन को पुनरारंभ किए बिना ऐप डोमेन से असेंबली को हटा सकते हैं, प्रत्येक बार अभिव्यक्ति का मूल्यांकन किया जाने पर स्मृति का उपभोग किया जा रहा था और इसे पुनर्प्राप्त नहीं किया जा सका। नतीजतन, कोड मेमोरी में असेंबली के रूप में स्मृति को लीक कर रहा था, और थोड़ी देर के बाद, आप परिणामों को जानते हैं।
- 1. बड़ी संख्या में फाइलों को स्थानांतरित करना
- 2. लाइटवेट एक्सएमएल व्यूअर जो बड़ी फाइलों को संभाल सकता है
- 3. बड़ी एक्सएमएल (> 100 एमबी) फाइलों को कैसे सत्यापित करें
- 4. एक्सएमएल फाइलों को खोजना या अनुक्रमण करना
- 5. जावा ऑब्जेक्ट्स को बहुत बड़ी एक्सएमएल फाइलों और मार्शलिंग को पार्स करना
- 6. आर में बड़ी डेटा फाइलों को प्लॉट करना?
- 7. एक्सएमएल फाइलों में क्रिस्टल रिपोर्ट्स स्टोर करना?
- 8. एक बड़ी एक्सएमएल फ़ाइल
- 9. एंड्रॉइड: एक्लिप्स में एक्सएमएल फाइलों को रिफैक्टर करना?
- 10. एंड्रॉइड में जावा ऑब्जेक्ट्स में एक्सएमएल फाइलों को अनारक्षित करना?
- 11. बड़ी फ्लॉव फाइलों को कैशिंग 5 एमबी +
- 12. सीएसएस फाइलों को विलय करना
- 13. बड़ी एक्सएमएल फाइलें लोड करना और मेमोरी एरर
- 14. एक बड़ी एक्सएमएल फ़ाइल
- 15. PHP में बड़े एक्सएमएल को संसाधित करने का सबसे अच्छा तरीका
- 16. क्या करक्स में बड़ी एक्सएमएल फाइलों को पार्स कर सकते हैं
- 17. ग्रहण में बड़ी एक्सएमएल फाइलें देखना?
- 18. एक्सएमएल फाइलों में विशेष पात्र - डीओएम एपीआई
- 19. पेजिंग के साथ बड़ी संख्या में डेटाबेस प्रविष्टियों को संसाधित करना
- 20. पायथन में बहुत बड़ी एक्सएमएल फाइलें उत्पन्न करना?
- 21. खेल एक्सएमएल फाइलों में तर्क
- 22. सीएसएस फाइलों को साफ करना
- 23. बड़ी संख्या में एचडीएफ 5 फाइलों को संगत करें
- 24. एक बड़ी (+ - 1 जीबी) एक्सएमएल फ़ाइल
- 25. जावा जेएक्सबी - तर्क को पुनरारंभ करने के साथ एक्सएमएल फाइलों को लिखना
- 26. ग्रहण: गैर-एक्सएमएल फाइलों के लिए एक्सएमएल सिंटैक्स रंग
- 27. परिवर्तनों के लिए बड़ी संख्या में फाइलों को कैसे मतदान करना चाहिए?
- 28. बड़ी बाइनरी फाइलों के कारण धीमा हो गया एक गिट रेपो को ठीक करना
- 29. बहुत बड़ी एक्सएमएल फाइलें संपादित करें
- 30. पायथन के साथ बड़ी एक्सएमएल फ़ाइल को पार्सिंग - etree.parse त्रुटि
इस प्रश्न पर पायथन टैग क्यों है? क्या आप उम्मीद कर रहे हैं कि लोग पाइथन समाधान प्रदान करेंगे? – Spaceghost
क्या आप दस्तावेज़ को पार्स करते समय स्मृति त्रुटियों से बाहर निकलते हैं या जब आप xpath क्वेरीज़ आज़माते हैं? यदि दूसरा, शायद समस्या xpath प्रश्नों के साथ है। किसी भी तरह से, क्या आपने JVM के लिए ढेर के लिए -एक्सएमएक्स के मूल्य को बढ़ाने का प्रयास किया? – Spaceghost
विस्तारित vtd-xml का प्रयास करें और मेमोरी मैपिंग विकल्प –