2009-08-13 10 views
6

जेएक्सबी तब तक अच्छी तरह से काम करता है जब तक मुझे धारावाहिक बीन्स जैसे कुछ करने की आवश्यकता न हो जिसके लिए मैं स्रोत को संशोधित नहीं कर सकता। यदि बीन में डिफॉल्ट कन्स्ट्रक्टर नहीं है या यदि यह ऑब्जेक्ट्स को संदर्भित करता है तो मैं क्षणिक को चिह्नित करना चाहता हूं, तो मैं एक अलग बीन लिख रहा हूं जिसे मैं एनोटेट कर सकता हूं और फिर मैन्युअल रूप से अन्य बीन से जानकारी की प्रतिलिपि बना सकता हूं।JAXB तब तक अच्छा है जब तक कि मुझे कुछ जटिल करने की आवश्यकता न हो। विकल्प क्या हैं?

उदाहरण के लिए, मैं अपवाद वस्तुओं को क्रमबद्ध करना चाहता था, लेकिन पाया कि ऐसा करने का एकमात्र तरीका com.sun। * कक्षाओं का उपयोग करने के लिए आवश्यक हैक का उपयोग करना था।

तो, क्या विकल्प हैं? अगली सबसे लोकप्रिय एक्सएमएल धारावाहिक एपीआई क्या है? ऐसा लगता है कि काम करने के लिए सक्षम होने के लिए अच्छा होगा:

  • क्रमबद्धता समय चुनें कि क्या परिणाम में कुछ क्षेत्रों को शामिल किया। (धारावाहिक चलाने के दौरान चीजों को क्षणिक चिह्नित करना)।

  • संदर्भों का उपयोग करके ऑब्जेक्ट ग्राफ़ में हैंडल लूप या सिर्फ मरने के अलावा कुछ और।

  • शायद किसी ऑब्जेक्ट को एनोटेट करें ताकि संस्करण 1 में यह चीजों को एक तरह से क्रमबद्ध करता है और संस्करण 2 में यह उन्हें दूसरे में क्रमबद्ध करता है। फिर जब मैं serializing मैं ऑब्जेक्ट का कौन सा संस्करण serialize चुनते हैं।

  • किसी ऑब्जेक्ट पर एनोटेशन से एक्सएसडी उत्पन्न करने का कोई तरीका है।

असल में मैं सिर्फ और अधिक लचीलापन से मैं वर्तमान में JAXB के साथ चाहते हैं।

उत्तर

2

खैर एक uber विन्यास क्रमबद्धता ढांचे चाहने के लिए मानक जवाब xstream है।

0

XStream एक लोकप्रिय एक्सएमएल सीरियलाइजेशन लाइब्रेरी है जो कि कन्स्ट्रक्टर या अन्य समस्याओं (यहां तक ​​कि अंतिम फ़ील्ड को भी बेकार करने) के बावजूद किसी भी चीज को क्रमबद्ध करने में सक्षम होने का दावा करती है। कोशिश करो।

वस्तुओं में कोई संशोधन की आवश्यकता नहीं है। निजी और अंतिम सहित आंतरिक क्षेत्रों को क्रमबद्ध करता है। गैर-सार्वजनिक और आंतरिक कक्षाओं का समर्थन करता है। कक्षाओं में डिफ़ॉल्ट कन्स्ट्रक्टर की आवश्यकता नहीं है।

1

यह भी देखें JIBX। यह एक अच्छा एक्सएमएल < -> ऑब्जेक्ट मैपर है। मेरा अनुभव यह है कि यदि आपके ऑब्जेक्ट्स में कुछ हद तक भयानक रिश्ते हैं तो एक रैपर ऑब्जेक्ट बनाना अक्सर आसान होता है जो उस जटिलता को छुपाता है और फिर उस ऑब्जेक्ट को जेआईबीएक्स के साथ मैप करता है।

2

जेएक्सबी एक विशिष्टता है, इसलिए आप विभिन्न कार्यान्वयन से चुन सकते हैं।

externalized मेटाडाटा

उपयोगी जब कक्षाएं जिसके लिए आप स्रोत पर टिप्पणी नहीं कर सकते हैं या किसी वस्तु मॉडल करने के लिए कई मैपिंग लागू करने के लिए साथ काम कर: EclipseLink JAXB (MOXy) आप क्या कह रहे हैं के लिए एक्सटेंशन नहीं है।

XPath आधारित मैपिंग

सच मिलने-इन-द-मिडल OXM मानचित्रण के लिए:

जेपीए संगतता

द्वि-दिशात्मक रिश्तों के लिए समर्थन सहित

संबंधित मुद्दे

 संबंधित मुद्दे