दिलचस्प पोस्ट
स्प्रिंग एमवीसी: सत्यापन, पोस्ट-रीडायरेक्ट-गियर, आंशिक अपडेट, आशावादी संवाहक, फील्ड सुरक्षा Jquery में क्लोन के साथ तालिका पंक्ति की प्रतिलिपि कैसे करें और नियंत्रण के लिए नया अद्वितीय आईडी बनाएं अन्य डेवलपर्स के लिए एक ढांचा या लायब्रेरी कैसे तैयार करें, सुरक्षित तरीके से? क्या Windows के लिए एक अच्छा वाल्ग्रिम विकल्प है? क्या मुझे हमेशा 'अपवाद' स्टेटमेंट में कोई अपवाद प्रकार निर्दिष्ट करना चाहिए? Android में ScrollView के अंदर GridView के साथ समस्याएं PHP में mysql_ * फ़ंक्शन का उपयोग क्यों नहीं किया जाना चाहिए? सरणी के लिए php stdClass .gitignore और .gitkeep के बीच अंतर क्या हैं? SASS और ब्रेकपॉइंट का उपयोग करते हुए मीडिया प्रश्नों को मर्ज करना (उत्तर-के) सी # में कौन से ऑपरेशन परमाणु हैं? अंगुलियज – एनजी-क्लॉक / एनजी-शो तत्व ब्लिंक दो दशमलव स्थान प्रदर्शित करें, कोई गोलाकार नहीं जीआईटी में, क्या एक रिपॉजिटरी में कोई असंबंधित शाखा शुरू करने का एक आसान तरीका है? एसडीके 'आईओएस 10.0' में उत्पाद प्रकार 'एप्लिकेशन' के लिए कोड साइनिंग की आवश्यकता है – स्टिकरपैक एक्स्टेंशन को विकास टीम की गलती की आवश्यकता है

जावा के लिए सर्वश्रेष्ठ XML पार्सर

मुझे कुछ चीजें पढ़ने की जरूरत है (सबसे अधिक, कुछ यूटीएफ -8 एन्कोडेड में एमटीएम) एक्सएमएल फाइलें, विभिन्न तत्वों और विशेषताओं को देखने के लिए छंटनी, शायद कुछ को संशोधित करें और एक्सएमएल वापस डिस्क पर फिर से लिखें (अधिमानतः अच्छा, इंडेंट स्वरूपण के साथ) ।

मेरी जरूरतों के लिए सर्वश्रेष्ठ XML पार्सर क्या होगा? इसमें से चुनने के लिए बहुत सारे हैं कुछ के बारे में मुझे पता है:

  • JDOM
  • Woodstox
  • XOM
  • dom4j
  • VTD-एक्सएमएल
  • Xerces-जे
  • गहरा लाल

और निश्चित रूप से एक जेडीके में (मैं जावा 6 का उपयोग कर रहा हूं)। मैं ज़ीरस से परिचित हूं लेकिन इसे क्लैन्की मिल गया।

सिफारिशें?

वेब के समाधान से एकत्रित समाधान "जावा के लिए सर्वश्रेष्ठ XML पार्सर"

यदि गति और स्मृति कोई समस्या नहीं है, तो dom4j एक बहुत अच्छा विकल्प है। यदि आपको गति की आवश्यकता है, तो वुडस्टॉक्स जैसी एक स्टाक्स पार्सर का उपयोग सही तरीके से होता है, लेकिन आपको चीजों को पूरा करने के लिए और कोड लिखना होगा और आपको स्ट्रीम में एक्सएमएल प्रोसेस करने के लिए इस्तेमाल करना होगा।

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

असल में एक्सएमएल को एक मानक तरीके से संभालने के तीन तरीके हैं:

  • SAX यह आसान API है आप एक हैंडलर वर्ग को परिभाषित करके एक्सएमएल पढ़ते हैं जो सीरियल तरीके से एक्सएमएल संसाधित होने पर तत्वों / विशेषताओं के अंदर डेटा प्राप्त करता है। यदि आप केवल कुछ विशेषताओं / तत्वों को पढ़ने और / या कुछ मानों को वापस (आपका केस) लिखने की योजना बनाते हैं, तो यह तेज़ और सरल है।
  • डोम यह विधि ऑब्जेक्ट ट्री बनाता है जो आपको बेतरतीब ढंग से संशोधित / एक्सेस करने देता है इसलिए यह जटिल एक्सएमएल हेरफेर और हैंडलिंग के लिए बेहतर है।
  • स्टैक्स एसएक्स और डोम के बीच के रास्ते के मध्य में है। आप बस इसे लिखने के लिए लिखते हैं, जिस पर आपकी दिलचस्पी रखने वाले पार्सर से डेटा खींचने के लिए लिखते हैं।

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

यह कहने की कोई जरूरत नहीं है कि सभी (मैंने सभी की जाँच नहीं की है, लेकिन मुझे यकीन है) पार्सर्स की एक JAXP कार्यान्वयन का अनुपालन करना प्रस्तावित है ताकि तकनीकी तौर पर आप सभी का उपयोग कर सकें, चाहे जो भी हो।

यहां डोम, सैक्स, स्टाएक्स और ट्रेक पर एक अच्छी तुलना है (स्रोत: http://download.oracle.com/docs/cd/E17802_01/webservices/webservices/docs/1.6/tutorial/doc/SJSXP2.html )

फ़ील्ड स्टाक्स सैक डोम ट्रेक

एपीआई टाइप पुल, स्ट्रीमिंग पुश, स्ट्रीमिंग मेमोरी ट्री एक्सएसएलटी नियम में

उच्च मध्यम उच्च माध्यम का उपयोग करने में आसानी

XPath क्षमता ना नहीं हाँ हां

सीपीयू और मेमोरी अच्छा अच्छा भिन्न होता है

फॉरवर्ड केवल हां हां नहीं नहीं

एक्सएमएल पढ़ें हाँ हाँ हां

लिखें XML हाँ नहीं हाँ हां

सीआरयूडी नं नहीं हां नहीं

सरल XML http://simple.sourceforge.net/ (डी) धारावाहिक वस्तुओं के लिए बहुत आसान है।

एसएक्स और डोम के अलावा एसएमएफ़स्ट्रीम रीडर का उपयोग करते हुए एसटीएक्स पार्सिंग उपलब्ध है जो एक एक्सएमएल पुल पार्सर है।

मुझे dom4j को XML के साथ काम करने के लिए उपकरण मिल गया है विशेष रूप से एक्सर्स की तुलना में

मैंने यह अनुशंसा नहीं की थी कि आपके पास आपके ऐप में "बहुत सोच" है, लेकिन एक्सएसएलटी का उपयोग जावा के हेरफेर से बेहतर (और एक्सएसएलटी टू बायटेक संकलन के साथ संभावित रूप से तेज) हो सकता है।

यदि आप प्रदर्शन के बारे में कम ध्यान रखते हैं, तो मैं अपाचे डाइजेस्टर का बड़ा प्रशंसक हूं, क्योंकि इससे आप सीधे एक्सएमएल से जावा बीन्स का नक्शा देख सकते हैं।

अन्यथा, आपको पहले पार्स करना होगा, और फिर अपने ऑब्जेक्ट्स का निर्माण करना होगा।