JAXB

2012-11-17 21 views
5

का उपयोग कर किसी मौजूदा ऑब्जेक्ट पर मार्शलिंग करना क्या मौजूदा एक्सचेंज पर सीधे मार्शल एक्सएमएल करना संभव है और केवल विशिष्ट फ़ील्ड अपडेट किए गए हैं?JAXB

मैं केवल क्लाइंट द्वारा अनुरोध किए गए कुछ फ़ील्ड को संशोधित करना चाहता हूं।

किसी भी संकेत दिए गए?

+0

यह प्रतिबिंब के साथ किया जा सकता है। इस प्रकार के आधार पर कि जटिल कैसे हैं, यह बहुत सरल हो सकता है। यह देखने के लिए उत्सुक है कि क्या किसी भी पुस्तकालय की सिफारिश की जाती है। – jahroy

+0

अनचाहे होने वाली वस्तुएं मेरे नियंत्रण में नहीं हैं। वे किसी अन्य प्रकार के सदस्य प्रकार भी बना सकते हैं, जिसमें अन्य उपयोगकर्ता परिभाषित वर्ग भी शामिल हैं। इस मामले में, प्रतिबिंब का उपयोग करना संभव है? क्या मुझे आत्मनिरीक्षण का भी उपयोग करना चाहिए? इसके लिए उपलब्ध कोई भी उदाहरण? –

+0

यह प्रतिबिंब का बिंदु है: आप इसके बारे में कुछ भी जानने के बिना किसी वस्तु का निरीक्षण कर सकते हैं। मैं आज एक उदाहरण पर काम नहीं कर पाऊंगा, लेकिन देखेंगे कि क्या मैं आज रात कुछ कोड पोस्ट कर सकता हूं (शायद 12 बजे)। – jahroy

उत्तर

0

समाधान है: एनोटेशन और प्रतिबिंब। और इसके लिए कोई पुस्तकालय नहीं हैं। जब मैं यह काम कर रहा था तो मैंने बहुत कुछ खोजा।

मैंने वही काम किया है जैसा आप चाहते हैं, मैंने इसके लिए अपना स्वयं का कार्यान्वयन किया है। लेकिन यह स्वामित्व है इसलिए मैं साझा नहीं कर सकता।

लेकिन समाधान पर आपको संकेत देने के लिए: मैंने रीलोडेबल वाले फ़ील्ड को चिह्नित करने के लिए एनोटेशन का उपयोग किया है और फिर पुनः लोड करने योग्य हिस्सों को पुनः लोड करने के लिए प्रतिबिंब का उपयोग किया है।

चरण 1: नव unmarshalled वस्तु से कॉल नए मूल्यों के साथ पुरानी वस्तु पर सेटर विधि: एक बार फिर एक नई वस्तु

चरण 2 बनाने के लिए एक्सएमएल unmarshal।

उम्मीद है कि इससे मदद मिलती है।

+0

लेकिन मैं उपर्युक्त टिप्पणियों से देखता हूं कि स्रोत आपके नियंत्रण में नहीं है, फिर प्रतिबिंब यहां सहायता कर सकता है, बशर्ते सार्वजनिक सेटर विधियां हों उन गुणों के लिए जिन्हें आप पुनः लोड करने का प्रयास कर रहे हैं। –

0

संक्षिप्त उत्तर नहीं है। एक सामान्य समाधान के बारे में सोचने वाले जैक्सबी बाइंडिंग को अनुकूलित करने का कोई आसान तरीका नहीं है। देखें JAXB and class instantiation

एक अन्य समाधान (शायद क्रूडर) XML भाग निकालने के लिए होगा जिसे आप संसाधित करना चाहते हैं और फिर अनारशेल निष्पादित करना चाहते हैं। देखें Java How to extract a complete XML block