"ঠিক আছে, তাহলে। আপনি সম্ভবত ইতিমধ্যে অনুমান করেছেন, এটি সবকিছু ছিল না।"

"এখন আমি আপনাকে 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(নাম = "চিড়িয়াখানা") 
@XmlRootElement 
ক্লাস  চিড়িয়াখানা 
{ 
@XmlAny সর্বজনীন  তালিকা<অবজেক্ট> প্রাণী; } 
 


@XmlType(name = "cat") 
@XmlRootElement 
ক্লাস  Cat 
{ 
সর্বজনীন  স্ট্রিং নাম; পাবলিক  int বয়স; পাবলিক  int ওজন; 
 
 

 বিড়াল() 
 { 
 } 
}

@XmlType(name = "dog") 
@XmlRootElement 
ক্লাস  ডগ 
{ 
সর্বজনীন  স্ট্রিং নাম; পাবলিক  int বয়স; পাবলিক  int ওজন; 
 
 

 বিড়াল() 
 { 
 } 

"যদি একটি সংগ্রহ @XmlAny টীকা দিয়ে চিহ্নিত করা হয়, তাহলে যেকোন উপযুক্ত বস্তু এতে রাখা যেতে পারে। এবং JAXB Unmarshaller সংগ্রহটি পূরণ করার সময় ট্যাগগুলিতে মনোযোগ দেয়।"

"এই ক্ষেত্রে, ট্যাগগুলির ক্রম " <zoo> <cat/><cat/> <dog/> <cat/> </zoo> " বিড়াল, বিড়াল, কুকুর এবং বিড়াল বস্তুর সাথে একটি সংগ্রহে রূপান্তরিত হবে "

"এটা আমি যা আশা করেছিলাম সে সম্পর্কে।"

"উহ-হু। ওহ, যাইহোক, আরও একটি জিনিস। আপনি যদি পাঠ্য এবং ট্যাগের মিশ্রণকে ডিসিরিয়ালাইজ করেন, তাহলে আপনাকে @XmlMixed টীকা ব্যবহার করতে হবে।"

"এখানে এই ধরনের XML এর একটি উদাহরণ:"

নমুনা XML যার জন্য @XmlMixed টীকা প্রয়োজন
<data> 
<items> 
পরীক্ষা 1 <item/> পাঠ্য 2 <item> নাম </item> পাঠ্য 3 </items> </data> 

 

 

 

"বাহ। আমি ভুলে গিয়েছিলাম যে এই ধরনের এক্সএমএল আছে। আমি সব কিছুতেই অভ্যস্ত হয়ে গেছি সুন্দর, এমবেডেড ট্যাগ সহ এবং অন্য সব কিছুতে।"

"এটি বিদ্যমান। এবং 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
}

"পবিত্র মলি। আমি কল্পনা করতে পারি না যে আমার এটি কোথায় লাগবে, তবে আমি মনে করি এটি খুব দরকারী। এবং সবচেয়ে গুরুত্বপূর্ণ, আমাকে স্ট্যান্ডার্ড স্ট্রিং বা সংখ্যাসূচক মানগুলিতে আটকে থাকতে হবে না।"

"হ্যাঁ। এটি সহজ, উদাহরণস্বরূপ, আপনি যখন একটি প্রোগ্রাম লেখেন যা একটি Facebook সার্ভারের সাথে বার্তা আদান-প্রদান করে, এবং তাদের কাছে একটি নির্ধারিত মান রয়েছে। আপনাকে কেবল তাদের নিজস্ব এনামকে বরাদ্দ করতে হবে এবং সবকিছু কাজ করবে৷ "

"এটা চমৎকার। আমি অবশ্যই JAXB পছন্দ করি।"

"দারুণ। তাহলে আজকের জন্য। যাও এবং একটু বিরতি নাও।"