স্প্রিং ওএক্সএম (Spring OXM) এবং JAXB (Java Architecture for XML Binding) ব্যবহার করে XML ডেটা প্রসেসিং করা খুবই কার্যকরী একটি পদ্ধতি। Spring OXM আপনাকে Java অবজেক্ট এবং XML ডেটার মধ্যে রূপান্তর করতে সাহায্য করে, আর JAXB হল একটি XML বাইনডিং ফ্রেমওয়ার্ক যা Java ক্লাস এবং XML ডেটার মধ্যে রূপান্তর করতে ব্যবহৃত হয়। এই প্রক্রিয়াটি আপনাকে XML ডেটাকে সহজে Java অবজেক্টে রূপান্তর (Unmarshaller) এবং Java অবজেক্টকে XML ডেটাতে রূপান্তর (Marshaller) করতে সহায়তা করে।
Spring OXM এবং JAXB ব্যবহার করে XML Data প্রসেসিং
স্প্রিং OXM, JAXB ব্যবহার করে XML ডেটার প্রসেসিং করার জন্য দুটি মূল ধাপ রয়েছে:
- Java অবজেক্টকে XML ফরম্যাটে রূপান্তর করা (Marshaller)
- XML ডেটাকে Java অবজেক্টে রূপান্তর করা (Unmarshaller)
এখানে একে একে এই প্রক্রিয়াগুলো সম্পর্কে বিস্তারিত আলোচনা করা হলো।
Step 1: JAXB এনোটেশন ব্যবহার করে Java ক্লাস তৈরি করা
প্রথমে, JAXB এনোটেশন ব্যবহার করে একটি Java ক্লাস তৈরি করতে হবে। এই ক্লাসটি XML ফাইলের সঙ্গে মেলানো হবে। নিচে একটি উদাহরণ দেওয়া হলো যেখানে Person নামের একটি ক্লাস তৈরি করা হয়েছে।
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement
public class Person {
private String name;
private int age;
@XmlElement
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@XmlElement
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
এখানে @XmlRootElement এবং @XmlElement এনোটেশনগুলি JAXB এর মাধ্যমে XML ফরম্যাটে রূপান্তরের জন্য ব্যবহার করা হয়েছে।
Step 2: Spring OXM কনফিগারেশন
স্প্রিং OXM এর মাধ্যমে JAXB ব্যবহার করতে হলে, Jaxb2Marshaller ক্লাস ব্যবহার করতে হবে যা Java অবজেক্টকে XML ফরম্যাটে রূপান্তর (marshaller) এবং XML থেকে Java অবজেক্টে রূপান্তর (unmarshaller) করতে সক্ষম।
Spring OXM কনফিগারেশন (XML কনফিগারেশন):
<bean id="marshaller" class="org.springframework.oxm.jaxb.Jaxb2Marshaller">
<property name="contextPaths" value="com.example.model"/>
</bean>
<bean id="unmarshaller" class="org.springframework.oxm.jaxb.Jaxb2Marshaller">
<property name="contextPaths" value="com.example.model"/>
</bean>
এখানে contextPaths এর মাধ্যমে Person ক্লাসের প্যাকেজ নাম উল্লেখ করা হয়েছে যাতে XML ডেটা এবং Java অবজেক্টের মধ্যে সম্পর্ক স্থাপন করা যায়।
Step 3: Java কোডের মাধ্যমে XML ডেটা প্রসেসিং
এবার Spring OXM এবং JAXB ব্যবহার করে XML ডেটা প্রসেস করা হবে। নিচে একটি উদাহরণ দেওয়া হলো যেখানে Java অবজেক্টকে XML-এ রূপান্তর (Marshaller) এবং XML থেকে Java অবজেক্টে রূপান্তর (Unmarshaller) করা হয়েছে।
import org.springframework.oxm.Marshaller;
import org.springframework.oxm.Unmarshaller;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.stream.StreamSource;
import java.io.StringReader;
import java.io.StringWriter;
public class OXMExample {
public static void main(String[] args) throws Exception {
ApplicationContext context = new ClassPathXmlApplicationContext("spring-config.xml");
// মার্শালার এবং আনমার্শালার তৈরি
Marshaller marshaller = context.getBean("marshaller", Marshaller.class);
Unmarshaller unmarshaller = context.getBean("unmarshaller", Unmarshaller.class);
// Java অবজেক্ট
Person person = new Person();
person.setName("John Doe");
person.setAge(30);
// মার্শালিং (Java থেকে XML)
StringWriter writer = new StringWriter();
marshaller.marshal(person, new StreamResult(writer));
String xmlOutput = writer.toString();
System.out.println("XML Output: \n" + xmlOutput);
// আনমার্শালিং (XML থেকে Java)
StringReader reader = new StringReader(xmlOutput);
Person unmarshalledPerson = (Person) unmarshaller.unmarshal(new StreamSource(reader));
System.out.println("Unmarshalled Object: " + unmarshalledPerson.getName() + ", " + unmarshalledPerson.getAge());
}
}
এই কোডে:
MarshallerএবংUnmarshallerস্প্রিং কনটেইনার থেকে নেয়া হয়েছে।- Java অবজেক্ট
Personকে XML ফরম্যাটে রূপান্তর (marshal) করা হয়েছে। - পরবর্তীতে XML ডেটা থেকে
Personঅবজেক্টে রূপান্তর (unmarshal) করা হয়েছে।
Step 4: XML ফাইলের আউটপুট
যখন Java অবজেক্টকে XML-এ রূপান্তর করা হয়, তখন আউটপুট XML ফাইলটি এইরকম হতে পারে:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<person>
<name>John Doe</name>
<age>30</age>
</person>
এখানে name এবং age এলিমেন্টগুলির মধ্যে Java অবজেক্টের ডেটা রাখা হয়েছে।
স্প্রিং OXM এবং JAXB ব্যবহার করে XML ডেটা প্রসেসিং সহজ এবং সুবিধাজনক। এটি ডেটা মার্শালিং এবং আনমার্শালিং প্রক্রিয়াকে সহজ করে তোলে এবং Java এবং XML ফরম্যাটের মধ্যে মেলবন্ধন ঘটায়।