JAXB (Java Architecture for XML Binding) একটি প্রযুক্তি যা XML ডেটা এবং Java অবজেক্টের মধ্যে রূপান্তর করার কাজ করে। এটি ডেটা বিনিময়ের জন্য XML ফাইলগুলিকে Java ক্লাসে পরিণত করে এবং Java অবজেক্টগুলোকে XML ফরম্যাটে রূপান্তর করতে সক্ষম। JAXB ব্যবহারে আপনি XML ডেটার সাথে Java এ কাজ করার সময় একে অটোমেটিকভাবে Java অবজেক্টে ম্যাপ করতে পারেন এবং vice versa।
JAXB এর মাধ্যমে XML থেকে Java Object Mapping করার জন্য আপনাকে নিম্নলিখিত ধাপগুলো অনুসরণ করতে হবে:
প্রথমে আপনাকে আপনার pom.xml
ফাইলে JAXB এর জন্য ডিপেনডেন্সি যোগ করতে হবে। JAXB Java SE 8 বা তার আগের সংস্করণের জন্য Java প্ল্যাটফর্মের অংশ ছিল, কিন্তু Java 9 থেকে JAXB আলাদা লাইব্রেরি হিসেবে এসেছে, তাই Maven প্রজেক্টে এটি অন্তর্ভুক্ত করতে হবে।
<dependencies>
<!-- JAXB API dependency -->
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>2.3.1</version>
</dependency>
<!-- JAXB Runtime dependency -->
<dependency>
<groupId>org.glassfish.jaxb</groupId>
<artifactId>jaxb-runtime</artifactId>
<version>2.3.1</version>
</dependency>
</dependencies>
এছাড়া, যদি আপনি Java 9 বা তার উপরের ভার্সন ব্যবহার করেন, তবে JAXB লাইব্রেরি আলাদাভাবে ইনস্টল করতে হবে।
XML থেকে Java অবজেক্টে রূপান্তরের জন্য Java ক্লাসে JAXB এর কিছু নির্দিষ্ট আনোটেশন ব্যবহার করতে হয়। সাধারণত @XmlRootElement
, @XmlElement
এবং @XmlAttribute
এই ধরনের আনোটেশন ব্যবহার করা হয়।
ধরা যাক, আমাদের XML ফাইলটি নিম্নরূপ:
<person>
<name>John Doe</name>
<age>30</age>
</person>
এটি Java অবজেক্টে ম্যাপ করার জন্য নিম্নলিখিত Java ক্লাস তৈরি করা হবে:
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement // Root element of the XML
public class Person {
private String name;
private int age;
@XmlElement // This will map to the <name> XML element
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@XmlElement // This will map to the <age> XML element
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
এখানে:
@XmlRootElement
: এটি XML এর রুট এলিমেন্টের সাথে Java ক্লাসটি সম্পর্কিত করে।@XmlElement
: এটি ক্লাসের গেটার মেথডে ব্যবহৃত হয় এবং নির্দিষ্ট XML এলিমেন্টগুলির সঙ্গে মেপিং করে।JAXB ব্যবহার করে XML থেকে Java অবজেক্টে রূপান্তরের জন্য JAXBContext
এবং Unmarshaller
ক্লাস ব্যবহার করতে হয়। এর মাধ্যমে আপনি XML ফাইলটি পড়তে এবং তা Java অবজেক্টে রূপান্তর করতে পারবেন।
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Unmarshaller;
import java.io.StringReader;
public class JAXBExample {
public static void main(String[] args) throws JAXBException {
// XML String to be converted to Java Object
String xmlString = "<person><name>John Doe</name><age>30</age></person>";
// Create a JAXB context for the Person class
JAXBContext context = JAXBContext.newInstance(Person.class);
// Create an unmarshaller
Unmarshaller unmarshaller = context.createUnmarshaller();
// Convert the XML string to a Person object
StringReader reader = new StringReader(xmlString);
Person person = (Person) unmarshaller.unmarshal(reader);
// Print the Java object
System.out.println("Name: " + person.getName());
System.out.println("Age: " + person.getAge());
}
}
এখানে:
JAXBContext.newInstance(Person.class)
: JAXBContext তৈরি করে, যা Person
ক্লাসের জন্য রূপান্তর নির্ধারণ করে।Unmarshaller.unmarshal()
: এটি XML স্ট্রিংকে Java অবজেক্টে রূপান্তর করে।এই কোডটি রান করলে এটি নিচের আউটপুট দেবে:
Name: John Doe
Age: 30
এছাড়া, Java অবজেক্টকে XML ফরম্যাটে রূপান্তর করার জন্য Marshaller
ব্যবহার করা হয়।
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
import java.io.StringWriter;
public class JAXBExample {
public static void main(String[] args) throws JAXBException {
// Create a Person object
Person person = new Person();
person.setName("John Doe");
person.setAge(30);
// Create a JAXB context for the Person class
JAXBContext context = JAXBContext.newInstance(Person.class);
// Create a marshaller
Marshaller marshaller = context.createMarshaller();
// Convert Java object to XML string
StringWriter writer = new StringWriter();
marshaller.marshal(person, writer);
// Print the XML
System.out.println(writer.toString());
}
}
এখানে:
Marshaller.marshal()
: এটি Java অবজেক্টকে XML ফরম্যাটে রূপান্তর করে।রান করলে আউটপুট হবে:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<person>
<name>John Doe</name>
<age>30</age>
</person>
JAXB এর মাধ্যমে XML এবং Java অবজেক্টের মধ্যে রূপান্তর খুবই সহজ এবং দ্রুত। আপনি XML ডেটাকে Java অবজেক্টে এবং Java অবজেক্টকে XML ফরম্যাটে রূপান্তর করতে JAXB এর Unmarshaller
এবং Marshaller
ক্লাস ব্যবহার করতে পারেন। এটি বিভিন্ন ওয়েব সার্ভিস, ডেটা বিনিময় এবং ইনটিগ্রেশন প্রকল্পে ব্যাপকভাবে ব্যবহৃত হয়।