मैं कुछ मनमानी एक्सएमएल शामिल करने के लिए एक जेएक्सबी मार्शलिंग ऑपरेशन के लिए आउटपुट स्ट्रीम को संशोधित करना चाहता हूं। स्थिति को स्पष्ट करने के लिए यहां एक उदाहरण दिया गया है।मनमानी इनलाइन एक्सएमएल को शामिल करने के लिए मैं जेएक्सबी मार्शलिंग आउटपुट स्ट्रीम को कैसे संशोधित कर सकता हूं?
@XmlRootElement(name="Product")
public class Product {
@XmlElement(name="CommonProperty")
private String commonProperty="Something";
@XmlElement(name="ExtraXml")
private String extraXml="Something extra";
}
कौन सा आम तौर पर इस में मार्शल होगा:: अब
<Product>
<CommonProperty>Something</CommonProperty>
<ExtraXml>Something else</ExtraXml>
</Product>
, क्या हुआ अगर extraXml
क्षेत्र कुछ निहित
मैं JAXB एनोटेशन के साथ एक मनमाना Product
डोमेन उद्देश्य यह है कि वर्तमान में इस तरह दिखना है अतिरिक्त एक्सएमएल (मनमानी जटिलता का) जिसे अंतिम मार्शल परिणाम के साथ इनलाइन शामिल किया जाना था?
कहो, extraXml
निहित "<abc><def>Something extra</def></abc>
", मैं वास्तव में एक समाधान है कि मुझे सक्षम Product
की तरह मार्शल करने के लिए की तरह होगा इस (वैकल्पिक स्वरूपण):
<Product>
<CommonProperty>Something</CommonProperty>
<abc>
<def>Something extra</def>
</abc>
</Product>
मैं this related question को देखा है, लेकिन यह काफी नहीं था जिसके परिणामस्वरूप मैं बाद में हूं, क्योंकि यह डोम सम्मिलन के बजाए एक समग्र स्वरूप परिवर्तन की दिशा में अधिक स्पष्ट लगता है।
extraXml
संपत्ति चित्रण के लिए बस वहां है, इसे @XmlTransient
या एक विशेष श्रेणी में चिह्नित किया जा सकता है। एकमात्र मानदंड यह है कि यह किसी भी तरह String
प्राप्त कर सकता है जिसमें व्यक्ति Product
मार्शल आउटपुट को जोड़ने के लिए पूरी तरह से मनमानी एक्सएमएल सामग्री शामिल है।
मुझे यह भी जिक्र करना चाहिए कि इससे आउटपुट के उपभोक्ता मनमानी सामग्री को ऐसे तरीके से पार्स करने में सक्षम हैं जो उन्हें उपयुक्त बनाता है। यहां का उद्देश्य सर्वर की तरफ प्रोसेसिंग को सरल बनाना है।
किसी भी मदद के लिए अग्रिम धन्यवाद।
वादा करता है - क्या आप थोड़ा सा विस्तार कर सकते हैं? –
@ गैरी, मैंने यह जवाब देने के लिए अपना जवाब अपडेट किया है कि यह @XmlAnyElement का उपयोग करके कैसे किया जा सकता है। आपके बड़े अपडेट के लिए –
+1 - यह एक बड़ी मदद है (और आज 3K तोड़ने पर बधाई)। यदि आपको कोई फर्क नहीं पड़ता तो एक आखिरी बिट है। Marshalling की शुरुआत में, मेरे पास केवल 'extraXml' एक स्ट्रिंग के रूप में है और' नए उत्पाद() 'द्वारा बनाए गए' उत्पाद' का एक उदाहरण है। क्या नोड को इस तरीके से निर्दिष्ट करने का कोई तरीका है कि जेएक्सबी मार्शल से खुश है? –