"ठीक आहे, मग. तुम्ही कदाचित आधीच अंदाज केला असेल, ते सर्व काही नव्हते."

"आता मी तुम्हाला JAXB च्या इतर अनेक पैलूंबद्दल सांगेन. पण जसे आम्ही JSON बरोबर केले, आम्ही संग्रहापासून सुरुवात करू."

"JAXB वापरून संग्रह डीसीरियलाइज करताना, यादी व्हेरिएबलसाठी कोणते विशिष्ट संग्रह (अॅरेलिस्ट, लिंक्डलिस्ट, वेक्टर, इ.) वापरायचे याबद्दल देखील अनिश्चितता असते. आणि पुन्हा या प्रश्नाचे उत्तर भाष्यांद्वारे प्रदान केले जाते."

"हे सर्व अगदी सोपे आहे. जर संग्रह प्रकार त्याच्या भाष्यात निर्दिष्ट केला नसेल, तर JAXB त्याचा प्रकार वापरून सर्वात योग्य संग्रह निवडण्याचा प्रयत्न करेल. सूचीसाठी, ही ArrayList असेल; नकाशासाठी, ते HashMap असेल इ. ."

"वास्तविकपणे, JSON च्या तुलनेत येथे खूप कमी समस्या आहेत, कारण प्रत्येक वर्गाचा एक अद्वितीय टॅग आहे आणि तुम्ही अचूक वर्ग निर्दिष्ट करण्यासाठी टॅग वापरू शकता."

"उदाहरणार्थ, जर तुम्हाला सामान्य पूर्वजांचा वारसा मिळालेल्या घटकांचा समूह डीसीरियलाइज करायचा असेल, तर तुम्ही  @XmlAny: भाष्य वापरा"

XML वरून ऑब्जेक्ट रूपांतरित करा
public static void main(String[] args) throws JAXBException
{
 String xmldata = "<zoo><cat/><cat/><dog/><cat/></zoo>";
 StringReader reader = new StringReader(xmldata);

 JAXBContext context = JAXBContext.newInstance(Cat.class, Zoo.class, Dog.class);
 Unmarshaller unmarshaller = context.createUnmarshaller();

 Cat cat = (Cat) unmarshaller.unmarshal(reader);
}
एक वर्ग ज्याच्या वस्तू XML वरून डीसीरियलाइज केल्या आहेत
@XmlType(नाव = "zoo") 
@XmlRootElement 
वर्ग  प्राणीसंग्रहालय 
{ 
@XmlAny सार्वजनिक  सूची<ऑब्जेक्ट> प्राणी; } 
 


@XmlType(नाव = "cat") 
@XmlRootElement 
वर्ग  मांजर 
{ 
सार्वजनिक  स्ट्रिंग नाव; सार्वजनिक  int वय; सार्वजनिक  इंट वजन; 
 
 

 मांजर() 
 { 
 } 
}

@XmlType(name = "dog") 
@XmlRootElement 
वर्ग  कुत्रा 
{ 
सार्वजनिक  स्ट्रिंग नाव; सार्वजनिक  int वय; सार्वजनिक  इंट वजन; 
 
 

 मांजर() 
 { 
 } 

"एखादे संकलन @XmlAny भाष्याने चिन्हांकित केले असल्यास , त्यात कोणत्याही योग्य वस्तू ठेवल्या जाऊ शकतात. आणि JAXB Unmarshaller संग्रह भरताना टॅगकडे लक्ष देतो."

"या स्थितीत, " <zoo> <cat/><cat/> <dog/> <cat/> </zoo> " टॅगचा क्रम मांजर, मांजर, कुत्रा आणि मांजरीच्या वस्तूंसह संग्रहात रूपांतरित केला जाईल. ."

"मला जे अपेक्षित होते तेच आहे."

"उह-हह. अरे, तसे, आणखी एक गोष्ट. जर तुम्ही मजकूर आणि टॅग्जचे मिश्रण डीसीरियलाइज केले असेल, तर तुम्हाला @XmlMixed भाष्य वापरावे लागेल."

"या प्रकारच्या XML चे उदाहरण येथे आहे:"

नमुना XML ज्यासाठी @XmlMixed भाष्य आवश्यक आहे
<data> 
<items> 
चाचणी 1 <item/> मजकूर 2 <item> नाव </item> मजकूर 3 </items> </data> 

 

 

 

"व्वा. मी असे XML अस्तित्वात आहे हे विसरलो होतो. एम्बेडेड टॅगसह आणि इतर सर्व गोष्टी सुंदर असण्याची मला सवय झाली आहे."

"ते अस्तित्वात आहे. आणि या केससाठी JAXB कडे भाष्य आहे!"

"छान. तसे, मला विचारायचे होते: enums कसे क्रमबद्ध केले जातात?"

"चांगला प्रश्न! छान पकड! मी कसा तरी तो विषय वगळला."

"एक विशेष @XmlEnum भाष्य आहे जे enums चिन्हांकित करण्यासाठी वापरले जाणे आवश्यक आहे. तुम्ही मूल्ये संख्या किंवा स्ट्रिंग म्हणून संग्रहित केली जातील की नाही हे निर्दिष्ट करण्यासाठी वापरू शकता."

"एक @XmlEnumValue भाष्य देखील आहे जे तुम्हाला विशिष्ट enum फील्डशी संबंधित मूल्य निर्दिष्ट करू देते."

"येथे काही उदाहरणे आहेत:"

संख्या तार
@XmlType
@XmlEnum(Integer.class)
public enum Code
{
 @XmlEnumValue("1")
  START,

 @XmlEnumValue("2")
  INPROGRESS,

 @XmlEnumValue("3")
  FINISH

 @XmlEnumValue("-1")
  ERROR
}
@XmlType
@XmlEnum(String.class)
public enum Card
{
 @XmlEnumValue("Spade")
  CLUBS,

 @XmlEnumValue("Diamond")
  DIAMONDS,

 @XmlEnumValue("Heart")
  HEARTS,

 @XmlEnumValue("Club")
  SPADES
}

"होली मोली. मला याची कुठे गरज असेल याची मी कल्पना करू शकत नाही, परंतु मला वाटते की ते खूप उपयुक्त आहे. आणि सर्वात महत्त्वाचे म्हणजे, मला मानक स्ट्रिंग किंवा अंकीय मूल्यांना चिकटून राहण्याची गरज नाही."

"होय. हे सुलभ आहे, उदाहरणार्थ, जेव्हा तुम्ही एखादा प्रोग्राम लिहिता जो फेसबुक सर्व्हरसह संदेशांची देवाणघेवाण करतो, आणि त्यांच्याकडे मूल्यांचा एक असाइन केलेला संच असतो. तुम्हाला फक्त त्यांना त्यांच्या स्वत: च्या enum वर नियुक्त करणे आवश्यक आहे आणि सर्वकाही कार्य करेल. "

"हे अप्रतिम आहे. मला नक्कीच JAXB आवडेल."

"छान. मग आजच आहे. जा आणि विश्रांती घे."