JAXP और JAXB में क्या अंतर है?


जवाबों:


69

JAXP (जावा एक्सएमएल प्रोसेसिंग के लिए जावा एपीआई) एक बड़ा पुराना छत्र शब्द है जो जावा, एनएसई, जैसे कि डोम, एसएएक्स और स्टैक्स में विभिन्न निम्न-स्तरीय XML एपीआई को कवर करता है।

JAXB (XML बाइंडिंग के लिए जावा आर्किटेक्चर) एक विशिष्ट एपीआई (नीचे का सामान javax.xml.bind) है जो XML दस्तावेजों को जावा ऑब्जेक्ट मॉडल से बांधने के लिए एनोटेशन का उपयोग करता है।


1
पार्सिंग (DOM, SAX, आदि) के अलावा, मेरा मानना ​​है कि JAXP में XPath के मूल्यांकन, XSLT परिवर्तनों का प्रदर्शन करने और एक स्कीमा के विरुद्ध XML को मान्य करने जैसे कार्यों के लिए API भी शामिल हैं। मुझे javax.xml.validationअपनी सेवाओं के XSD के खिलाफ आने वाले अनुरोधों को मान्य करने के लिए कक्षाओं का उपयोग करना याद है , ताकि ग्राहकों को स्वयं समस्याओं का निवारण करने में मदद मिल सके।
स्पाकार्की 21

49

JAXP XML प्रसंस्करण के लिए जावा एपीआई है, जो हमें DOM या SAX पार्सर्स के साथ XML फ़ाइलों को पार्स करने के लिए एक मंच प्रदान करता है।

जहाँ JAXB XML बाइंडिंग के लिए जावा आर्किटेक्चर है, वहीं जावा प्रोग्रामिंग लैंग्वेज में लिखे एप्लिकेशन से XML डॉक्यूमेंट्स को एक्सेस करना आसान हो जाएगा।

उदाहरण के लिए: Computer.xml फ़ाइल, यदि हम JAXP के साथ डेटा एक्सेस करना चाहते हैं, तो हम निम्नलिखित चरणों का पालन करेंगे

  1. SAX Parser या DOM Parser बनाएं और फिर डेटा को PArse करें, अगर हम DOM का उपयोग करते हैं, तो यह मेमोरी इंटेंस हो सकता है यदि दस्तावेज़ बहुत बड़ा है। मान लीजिए अगर हम SAX पार्सर का उपयोग करते हैं, तो हमें दस्तावेज़ की शुरुआत की पहचान करने की आवश्यकता है। जब यह कुछ महत्वपूर्ण (SAX शब्दों में, एक "घटना") का सामना करता है जैसे कि XML टैग की शुरुआत, या किसी टैग के अंदर का पाठ, यह उस डेटा को कॉलिंग एप्लिकेशन के लिए उपलब्ध कराता है।
  2. फिर एक सामग्री हैंडलर बनाएं जो किसी घटना का सामना करने पर पार्सर द्वारा अधिसूचित किए जाने वाले तरीकों को परिभाषित करता है। कॉलबैक विधियों के रूप में जानी जाने वाली ये विधियाँ प्राप्त होने वाले डेटा पर उचित कार्रवाई करती हैं।

समान संचालन यदि यह JAXB द्वारा किया जाता है, तो Computer.xml का उपयोग करने के लिए निम्न चरणों का पालन करना होगा

  1. XML दस्तावेज़ के लिए स्कीमा को बाइंड करें।
  2. जावा सामग्री ऑब्जेक्ट्स में दस्तावेज़ को अनमर्श करें। जावा सामग्री ऑब्जेक्ट XML दस्तावेज़ की सामग्री और संगठन का प्रतिनिधित्व करते हैं, और सीधे आपके कार्यक्रम के लिए उपलब्ध हैं। अनमर्सहॉलिंग के बाद, आपका प्रोग्राम एक्सएमएल डॉक्यूमेंट में डेटा को केवल जावा कंटेंट ऑब्जेक्ट्स में एक्सेस करके और फिर उसे प्रदर्शित कर एक्सेस कर सकता है। पार्सर बनाने और उपयोग करने की आवश्यकता नहीं है और कॉलबैक विधियों के साथ सामग्री हैंडलर लिखने की आवश्यकता नहीं है। इसका मतलब यह है कि डेवलपर्स XML डेटा को एक्सएमएल या एक्सएमएल प्रोसेसिंग के बिना एक्सेस कर सकते हैं और प्रोसेस कर सकते हैं

DOM, XML फ़ाइल को ऑब्जेक्ट के रूप में मानता है, SAX के रूप में अलग-अलग आइटम को ईवेंट के रूप में संभालता है, जो अधिक आकर्षक है?
मालवेयरजेक 11

5
@ मालवेयरजेक: यह स्थिति पर निर्भर करता है, एसएएक्स बेहतर है यदि आप पूरे एक्सएमएल को अपने अनुक्रमिक क्रम में एक्सेस कर रहे हैं क्योंकि यह कम मेमोरी लेता है। यदि आप किसी XML में मध्य तत्वों का रैंडम एक्सेस चाहते हैं, तो DOM बेहतर है। यह संतुलन हर कार्यक्रम में मेमोरी बनाम टाइम स्पेस बैलेंस के समान है
रेंगसामी रामानुजम

1

महत्वपूर्ण अंतर जो xml स्कीमा निभाता है। JAXP XML स्कीमा के बारे में जागरूकता के बिना पुराना है जबकि JAXB स्कीमा बंधन को पहले चरण के रूप में संभालता है।


JAXP ( JSR 206 ) ट्यूटोरियल, "कार्यान्वयन SAX सत्यापन" भाग में, "XML स्कीमा के साथ सत्यापन" के लिए समर्पित अनुभाग प्रदान करता है। विनिर्देश JAXP API के भाग के रूप में स्कीमा वर्ग का भी उल्लेख करता है। (इसे OpenJDK 7 में शामिल किए जाने के बाद एक स्टैंडअलोन परियोजना के रूप में वापस ले लिया गया है, JAXP 1.6 के विनिर्देश पीडीएफ में धारा 11.5 देखें।)
ओलिवर Cailloux
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.