XML Schema Validation হল একটি প্রক্রিয়া যার মাধ্যমে XML ডকুমেন্টের গঠন এবং উপাদানগুলির সঠিকতা যাচাই করা হয়। Spring OXM এর মাধ্যমে আপনি XML ডকুমেন্টের সাথে একটি XML Schema (XSD) যুক্ত করে সঠিকতা যাচাই করতে পারেন। এই প্রক্রিয়াটি XML ডেটার মধ্যে ভুল বা অবৈধ ডেটা থাকলে তা সনাক্ত করতে সাহায্য করে।
Spring OXM ব্যবহারের মাধ্যমে XML ডেটা লোড করার সময় এটি একটি XML Schema (XSD) ফাইলের সাহায্যে ভ্যালিডেশন করতে পারে, যা নিশ্চিত করবে যে XML ডকুমেন্টটি সঠিক গঠন অনুসরণ করছে।
ধরা যাক, আমাদের একটি XML ডকুমেন্ট রয়েছে যা বই সম্পর্কিত তথ্য ধারণ করে, এবং আমরা এই XML ডকুমেন্টের সঠিকতা যাচাই করতে একটি XSD (XML Schema Definition) ফাইল তৈরি করতে চাই।
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="book">
<xs:complexType>
<xs:sequence>
<xs:element name="title" type="xs:string"/>
<xs:element name="author" type="xs:string"/>
<xs:element name="price" type="xs:decimal"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
এই XSD ফাইলটি XML ডকুমেন্টের গঠন সংজ্ঞায়িত করছে, যাতে book
এলিমেন্টের মধ্যে title
, author
, এবং price
এলিমেন্টগুলি থাকা আবশ্যক।
Spring OXM ব্যবহার করে XML ডেটা ভ্যালিডেট করতে, আমরা XSD ফাইলটি কনফিগারেশন ফাইলে উল্লেখ করব। নিচে Spring XML কনফিগারেশন ফাইল দেওয়া হলো, যাতে XML Schema Validation সক্রিয় করা হয়েছে।
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.0.xsd">
<!-- Define the Jaxb2Marshaller bean -->
<bean id="marshaller" class="org.springframework.oxm.jaxb.Jaxb2Marshaller">
<property name="classesToBeBound">
<list>
<value>com.example.Book</value>
</list>
</property>
<!-- XML Schema Validation -->
<property name="schema" value="classpath:book.xsd"/>
</bean>
</beans>
এখানে schema
প্রপার্টি দিয়ে আমরা XSD ফাইলের লোকেশন উল্লেখ করেছি, যা XML ডকুমেন্টের জন্য ভ্যালিডেশন নিশ্চিত করবে। classpath:book.xsd
নির্দেশ করে যে XSD ফাইলটি ক্লাসপাথে উপস্থিত থাকবে।
Spring OXM ব্যবহার করে XML থেকে Java অবজেক্টে রূপান্তর করার সময় যদি XML ডকুমেন্টটি XSD এর সাথে সঠিক না হয়, তাহলে Spring OXM একটি ত্রুটি (exception) তৈরি করবে।
package com.example;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.oxm.Marshaller;
import org.springframework.oxm.Unmarshaller;
import org.springframework.oxm.jaxb.Jaxb2Marshaller;
import java.io.File;
public class SpringOXMExample {
public static void main(String[] args) throws Exception {
// Load Spring context from XML configuration
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
// Get the marshaller and unmarshaller beans
Marshaller marshaller = context.getBean("marshaller", Marshaller.class);
Unmarshaller unmarshaller = context.getBean("marshaller", Unmarshaller.class);
// Unmarshal the XML file into a Book object
File xmlFile = new File("book.xml");
try {
Book book = (Book) unmarshaller.unmarshal(xmlFile);
// Print the book details
System.out.println("Book Title: " + book.getTitle());
System.out.println("Book Author: " + book.getAuthor());
System.out.println("Book Price: " + book.getPrice());
} catch (Exception e) {
System.out.println("XML Validation failed: " + e.getMessage());
}
context.close();
}
}
এখন যদি book.xml
ফাইলটি XSD ফাইলের সাথে মেলে না, তাহলে Spring OXM একটি exception ছুঁড়ে দেবে, যেমন:
XML Validation failed: cvc-complex-type.2.4.a: Invalid content was found starting with element 'price'.
Spring OXM এর মাধ্যমে XML Schema Validation প্রয়োগ করার মাধ্যমে আপনি XML ডেটার সঠিকতা নিশ্চিত করতে পারেন। XSD ফাইল ব্যবহার করে XML ডকুমেন্টের গঠন যাচাই করা যায়, এবং যদি কোন ভুল থাকে, তাহলে এটি একটি exception ছুঁড়ে দিবে। এই প্রক্রিয়াটি XML ডেটা ইনপুটের জন্য কার্যকর সুরক্ষা প্রদান করে এবং আপনাকে নিশ্চিত করে যে ডেটা সঠিকভাবে ফর্ম্যাট করা হয়েছে।
XML Schema একটি নির্দিষ্ট ডিফিনেশন ফাইল যা XML ডকুমেন্টের কাঠামো এবং কন্টেন্টের বৈধতা যাচাই করার জন্য ব্যবহৃত হয়। এটি XML ডকুমেন্টের উপাদান, বৈশিষ্ট্য, ডাটা টাইপ এবং সম্পর্ক নির্ধারণ করে, যার মাধ্যমে XML ডকুমেন্টের গঠন এবং কন্টেন্টের সঠিকতা নিশ্চিত করা হয়।
XML Schema কে সাধারণত XSD (XML Schema Definition) বলা হয়, এবং এটি XML ডকুমেন্টের জন্য একটি স্ট্রাকচারাল এবং কন্টেন্ট রুল সেট করে।
XML Schema বা XSD এর প্রধান উদ্দেশ্য হল XML ডকুমেন্টের সঠিকতা যাচাই করা। এর মাধ্যমে আপনি নিশ্চিত করতে পারেন যে একটি XML ডকুমেন্টের গঠন এবং কন্টেন্ট একটি নির্দিষ্ট স্ট্যান্ডার্ড বা রুল অনুসারে রয়েছে।
XML Schema ব্যবহারের মাধ্যমে নিম্নলিখিত সুবিধাগুলি পাওয়া যায়:
নিচে একটি সাধারণ XML Schema (XSD) উদাহরণ দেওয়া হল, যা একটি XML ডকুমেন্টের জন্য কাঠামো এবং ডেটা টাইপ নির্ধারণ করে।
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="person">
<xs:complexType>
<xs:sequence>
<xs:element name="name" type="xs:string"/>
<xs:element name="age" type="xs:int"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
এখানে, XML Schema একটি person
এলিমেন্টের জন্য ডেটা টাইপ এবং কাঠামো নির্ধারণ করেছে। name
এলিমেন্টটি একটি স্ট্রিং এবং age
এলিমেন্টটি একটি পূর্ণসংখ্যা (integer) হওয়া উচিত।
XML Schema ব্যবহারের মাধ্যমে আপনি নিম্নলিখিত সমস্যাগুলির সমাধান করতে পারবেন:
XML Schema একটি গুরুত্বপূর্ণ টুল যা XML ডকুমেন্টের গঠন, ডেটা টাইপ এবং বৈধতা নির্ধারণ করতে সাহায্য করে। এর মাধ্যমে XML ডেটার সঠিকতা, সংগতি এবং এক্সচেঞ্জ সহজ হয়, যা বড় সিস্টেমে কার্যকর ডেটা ব্যবস্থাপনা নিশ্চিত করে।
স্প্রিং OXM (Spring Object/XML Mapping) ফ্রেমওয়ার্ক JAXB (Java Architecture for XML Binding) ব্যবহার করে XML Schema Validation সমর্থন করে। XML Schema Validation নিশ্চিত করে যে XML ডেটা নির্দিষ্ট এক্সএমএল স্কিমার (XML Schema) সাথে মেলে এবং এর কাঠামো সঠিক।
এই টিউটোরিয়ালে আমরা দেখব কিভাবে JAXB ব্যবহার করে XML ডেটাকে একটি নির্দিষ্ট XML Schema-র সাথে যাচাই করা যায়।
XML Schema Validation করতে JAXB মাপলার (marshaller) এবং আনমার্শালারের (unmarshaller) সাথে কিছু অতিরিক্ত কনফিগারেশন যোগ করতে হবে। JAXB-কে XML Schema Validation এর জন্য কনফিগার করার জন্য javax.xml.validation.Validator
ক্লাস ব্যবহার করতে হয়।
প্রথমে একটি XML Schema তৈরি করতে হবে, যা XML ডেটার কাঠামো নির্ধারণ করবে। নিচে একটি employee.xsd
XML Schema এর উদাহরণ দেওয়া হলো:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="employee">
<xs:complexType>
<xs:sequence>
<xs:element name="name" type="xs:string"/>
<xs:element name="age" type="xs:int"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
এই স্কিমাটি একটি employee
এলিমেন্ট সংজ্ঞায়িত করে, যার মধ্যে দুটি উপাদান (name
এবং age
) থাকবে। name
উপাদানটি স্ট্রিং এবং age
উপাদানটি পূর্ণসংখ্যা (integer) হবে।
এখন আমরা JAXB অ্যানোটেশন সহ একটি Employee
ক্লাস তৈরি করব, যাতে এই ক্লাসটি XML ডেটার জন্য JAXB রূপান্তর পরিচালনা করতে পারে।
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement
public class Employee {
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;
}
}
এই Employee
ক্লাসে JAXB অ্যানোটেশন ব্যবহার করা হয়েছে, যাতে এটি XML ডেটা এবং Java অবজেক্টের মধ্যে রূপান্তর সহজভাবে করতে পারে।
স্প্রিং OXM কনফিগারেশন XML ফাইলে JAXB মাপলার কনফিগার করার জন্য, XML Schema Validation সক্রিয় করতে হবে। নিচে একটি উদাহরণ দেওয়া হলো:
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:oxm="http://www.springframework.org/schema/oxm"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/oxm
http://www.springframework.org/schema/oxm/spring-oxm.xsd">
<!-- JAXB Marshaller Bean with Schema Validation -->
<oxm:jaxb-marshaller id="marshaller" context-path="com.example" validate="true">
<oxm:jaxb-schema-location>classpath:/employee.xsd</oxm:jaxb-schema-location>
</oxm:jaxb-marshaller>
</beans>
এখানে validate="true"
অপশনটি XML Schema Validation সক্রিয় করে এবং jaxb-schema-location
এর মাধ্যমে XML Schema ফাইলের অবস্থান নির্ধারণ করা হয়। classpath:/employee.xsd
নিশ্চিত করে যে employee.xsd
ফাইলটি ক্লাসপাথে পাওয়া যাবে।
এখন, JAXB ব্যবহার করে XML ডেটার সাথে স্কিমা যাচাই করার জন্য নিচের কোডটি ব্যবহার করা যাবে:
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.oxm.jaxb.Jaxb2Marshaller;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.stream.StreamSource;
import javax.xml.validation.SchemaFactory;
import javax.xml.validation.Validator;
import org.xml.sax.SAXException;
import java.io.File;
import java.io.StringReader;
public class SpringOXMExample {
public static void main(String[] args) throws Exception {
// Spring Context লোড করুন
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
// JAXB Marshaller Bean ইনিশিয়ালাইজ করুন
Jaxb2Marshaller marshaller = (Jaxb2Marshaller) context.getBean("marshaller");
// Employee অবজেক্ট তৈরি
Employee employee = new Employee();
employee.setName("John Doe");
employee.setAge(30);
// Employee অবজেক্ট XML এ রূপান্তর
StringWriter writer = new StringWriter();
marshaller.marshal(employee, new StreamResult(writer));
String xmlOutput = writer.toString();
// XML Schema Validation
validateXML(xmlOutput);
// XML আউটপুট প্রিন্ট করা
System.out.println("XML Output:");
System.out.println(xmlOutput);
}
private static void validateXML(String xml) throws SAXException, IOException {
// XML Schema ফাইলটি লোড করা
File schemaFile = new File("src/main/resources/employee.xsd");
SchemaFactory factory = SchemaFactory.newInstance("http://www.w3.org/2001/XMLSchema");
javax.xml.validation.Schema schema = factory.newSchema(schemaFile);
// XML Validation
Validator validator = schema.newValidator();
validator.validate(new StreamSource(new StringReader(xml)));
}
}
ClassPathXmlApplicationContext
ব্যবহার করে Spring কনফিগারেশন ফাইলটি লোড করা হয়।marshaller
Bean ব্যবহার করে Java অবজেক্ট Employee
কে XML ফরম্যাটে রূপান্তরিত করা হয়।marshaller.marshal()
মেথড ব্যবহার করে Java অবজেক্ট XML ফরম্যাটে রূপান্তরিত করা হয়।validateXML()
মেথড XML ডেটা এবং XML Schema ফাইলটি যাচাই করে, যদি XML স্কিমার সাথে মেলে না, তবে একটি SAXException
ত্রুটি ফেলে।যদি XML স্কিমা সঠিকভাবে মেলে, তবে প্রোগ্রামটি XML আউটপুট প্রিন্ট করবে:
XML Output:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<employee>
<name>John Doe</name>
<age>30</age>
</employee>
যদি XML স্কিমার সাথে মিল না থাকে, তবে একটি SAXException
ত্রুটি উত্থাপন হবে, যা XML ফাইলের ভুল গঠন বা কাঠামো নির্দেশ করবে।
স্প্রিং OXM এবং JAXB ব্যবহার করে XML Schema Validation একটি গুরুত্বপূর্ণ বৈশিষ্ট্য যা XML ডেটার সঠিকতা যাচাই করতে সহায়তা করে। এটি বিশেষত সিস্টেমের মধ্যে XML ডেটা ইন্টিগ্রিটি নিশ্চিত করার জন্য উপকারী।
স্প্রিং OXM (Spring Object/XML Mapping) ফ্রেমওয়ার্ক JAXB (Java Architecture for XML Binding) ব্যবহার করে XML Schema Validation সমর্থন করে। XML Schema Validation নিশ্চিত করে যে XML ডেটা নির্দিষ্ট এক্সএমএল স্কিমার (XML Schema) সাথে মেলে এবং এর কাঠামো সঠিক।
এই টিউটোরিয়ালে আমরা দেখব কিভাবে JAXB ব্যবহার করে XML ডেটাকে একটি নির্দিষ্ট XML Schema-র সাথে যাচাই করা যায়।
XML Schema Validation করতে JAXB মাপলার (marshaller) এবং আনমার্শালারের (unmarshaller) সাথে কিছু অতিরিক্ত কনফিগারেশন যোগ করতে হবে। JAXB-কে XML Schema Validation এর জন্য কনফিগার করার জন্য javax.xml.validation.Validator
ক্লাস ব্যবহার করতে হয়।
প্রথমে একটি XML Schema তৈরি করতে হবে, যা XML ডেটার কাঠামো নির্ধারণ করবে। নিচে একটি employee.xsd
XML Schema এর উদাহরণ দেওয়া হলো:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="employee">
<xs:complexType>
<xs:sequence>
<xs:element name="name" type="xs:string"/>
<xs:element name="age" type="xs:int"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
এই স্কিমাটি একটি employee
এলিমেন্ট সংজ্ঞায়িত করে, যার মধ্যে দুটি উপাদান (name
এবং age
) থাকবে। name
উপাদানটি স্ট্রিং এবং age
উপাদানটি পূর্ণসংখ্যা (integer) হবে।
এখন আমরা JAXB অ্যানোটেশন সহ একটি Employee
ক্লাস তৈরি করব, যাতে এই ক্লাসটি XML ডেটার জন্য JAXB রূপান্তর পরিচালনা করতে পারে।
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement
public class Employee {
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;
}
}
এই Employee
ক্লাসে JAXB অ্যানোটেশন ব্যবহার করা হয়েছে, যাতে এটি XML ডেটা এবং Java অবজেক্টের মধ্যে রূপান্তর সহজভাবে করতে পারে।
স্প্রিং OXM কনফিগারেশন XML ফাইলে JAXB মাপলার কনফিগার করার জন্য, XML Schema Validation সক্রিয় করতে হবে। নিচে একটি উদাহরণ দেওয়া হলো:
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:oxm="http://www.springframework.org/schema/oxm"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/oxm
http://www.springframework.org/schema/oxm/spring-oxm.xsd">
<!-- JAXB Marshaller Bean with Schema Validation -->
<oxm:jaxb-marshaller id="marshaller" context-path="com.example" validate="true">
<oxm:jaxb-schema-location>classpath:/employee.xsd</oxm:jaxb-schema-location>
</oxm:jaxb-marshaller>
</beans>
এখানে validate="true"
অপশনটি XML Schema Validation সক্রিয় করে এবং jaxb-schema-location
এর মাধ্যমে XML Schema ফাইলের অবস্থান নির্ধারণ করা হয়। classpath:/employee.xsd
নিশ্চিত করে যে employee.xsd
ফাইলটি ক্লাসপাথে পাওয়া যাবে।
এখন, JAXB ব্যবহার করে XML ডেটার সাথে স্কিমা যাচাই করার জন্য নিচের কোডটি ব্যবহার করা যাবে:
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.oxm.jaxb.Jaxb2Marshaller;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.stream.StreamSource;
import javax.xml.validation.SchemaFactory;
import javax.xml.validation.Validator;
import org.xml.sax.SAXException;
import java.io.File;
import java.io.StringReader;
public class SpringOXMExample {
public static void main(String[] args) throws Exception {
// Spring Context লোড করুন
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
// JAXB Marshaller Bean ইনিশিয়ালাইজ করুন
Jaxb2Marshaller marshaller = (Jaxb2Marshaller) context.getBean("marshaller");
// Employee অবজেক্ট তৈরি
Employee employee = new Employee();
employee.setName("John Doe");
employee.setAge(30);
// Employee অবজেক্ট XML এ রূপান্তর
StringWriter writer = new StringWriter();
marshaller.marshal(employee, new StreamResult(writer));
String xmlOutput = writer.toString();
// XML Schema Validation
validateXML(xmlOutput);
// XML আউটপুট প্রিন্ট করা
System.out.println("XML Output:");
System.out.println(xmlOutput);
}
private static void validateXML(String xml) throws SAXException, IOException {
// XML Schema ফাইলটি লোড করা
File schemaFile = new File("src/main/resources/employee.xsd");
SchemaFactory factory = SchemaFactory.newInstance("http://www.w3.org/2001/XMLSchema");
javax.xml.validation.Schema schema = factory.newSchema(schemaFile);
// XML Validation
Validator validator = schema.newValidator();
validator.validate(new StreamSource(new StringReader(xml)));
}
}
ClassPathXmlApplicationContext
ব্যবহার করে Spring কনফিগারেশন ফাইলটি লোড করা হয়।marshaller
Bean ব্যবহার করে Java অবজেক্ট Employee
কে XML ফরম্যাটে রূপান্তরিত করা হয়।marshaller.marshal()
মেথড ব্যবহার করে Java অবজেক্ট XML ফরম্যাটে রূপান্তরিত করা হয়।validateXML()
মেথড XML ডেটা এবং XML Schema ফাইলটি যাচাই করে, যদি XML স্কিমার সাথে মেলে না, তবে একটি SAXException
ত্রুটি ফেলে।যদি XML স্কিমা সঠিকভাবে মেলে, তবে প্রোগ্রামটি XML আউটপুট প্রিন্ট করবে:
XML Output:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<employee>
<name>John Doe</name>
<age>30</age>
</employee>
যদি XML স্কিমার সাথে মিল না থাকে, তবে একটি SAXException
ত্রুটি উত্থাপন হবে, যা XML ফাইলের ভুল গঠন বা কাঠামো নির্দেশ করবে।
স্প্রিং OXM এবং JAXB ব্যবহার করে XML Schema Validation একটি গুরুত্বপূর্ণ বৈশিষ্ট্য যা XML ডেটার সঠিকতা যাচাই করতে সহায়তা করে। এটি বিশেষত সিস্টেমের মধ্যে XML ডেটা ইন্টিগ্রিটি নিশ্চিত করার জন্য উপকারী।
স্প্রিং OXM (Spring Object/XML Mapping) ব্যবহার করে XML Schema কনফিগার করা একটি গুরুত্বপূর্ণ পদক্ষেপ, যা Java অবজেক্টগুলোর জন্য XML ফাইলের কাঠামো নির্ধারণ করতে সাহায্য করে। XML Schema (XSD) ব্যবহার করে XML ডেটার গঠন এবং বৈধতা (validation) নিশ্চিত করা যায়। Spring OXM ফ্রেমওয়ার্কের মাধ্যমে আপনি Java অবজেক্ট এবং XML ডেটার মধ্যে রূপান্তর (marshalling/unmarshalling) করতে পারবেন এবং XML Schema-এর সাথে তার সামঞ্জস্যও বজায় রাখতে পারবেন।
এখানে দেখানো হবে কিভাবে Spring OXM ফ্রেমওয়ার্কের মধ্যে XML Schema কনফিগার করা হয়।
প্রথমে একটি XML Schema (XSD) তৈরি করতে হবে যা XML ডেটার কাঠামো নির্ধারণ করবে।
person.xsd
:<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="person">
<xs:complexType>
<xs:sequence>
<xs:element name="name" type="xs:string"/>
<xs:element name="age" type="xs:int"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
এখানে, person
নামক একটি এলিমেন্টের মধ্যে দুটি উপাদান রয়েছে: name
(যা একটি string) এবং age
(যা একটি integer)। এই XSD ফাইলটি XML ডেটার কাঠামো নির্ধারণ করবে।
স্প্রিং OXM ব্যবহার করার জন্য আপনাকে Jaxb2Marshaller
কনফিগার করতে হবে এবং XML Schema (XSD) ফাইলের সাথে সেটি যুক্ত করতে হবে। এখানে দেখানো হবে কিভাবে Spring OXM কনফিগারেশন ফাইলে XML Schema যুক্ত করা হয়।
@Configuration
public class SpringOXMConfig {
@Bean
public Jaxb2Marshaller jaxb2Marshaller() {
Jaxb2Marshaller marshaller = new Jaxb2Marshaller();
marshaller.setContextPath("com.example.model"); // JAXB ক্লাসের প্যাকেজ
marshaller.setSchema(new ClassPathResource("person.xsd")); // XSD ফাইলের পাথ
return marshaller;
}
@Bean
public SomeService someService() {
SomeService service = new SomeService();
service.setMarshaller(jaxb2Marshaller());
return service;
}
}
এখানে, marshaller.setSchema(new ClassPathResource("person.xsd"));
লাইনটি XSD স্কিমাকে স্প্রিং OXM কনফিগারেশনে যুক্ত করছে, যার ফলে XML ফাইলটি XSD স্কিমার সাথে মিলিয়ে রূপান্তর (marshal) এবং পঠন (unmarshal) করা সম্ভব হবে।
Java ক্লাসে JAXB অ্যানোটেশন ব্যবহার করতে হবে যাতে XML Schema-এর সাথে Java অবজেক্টের সম্পর্ক স্থাপন করা যায়। JAXB অ্যানোটেশনগুলি XML ফাইলের কাঠামোর সাথে Java অবজেক্টের গঠন মিলে যায় এমনভাবে কাজ করবে।
Person
ক্লাস:@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
অ্যানোটেশনটি XML ডকুমেন্টের রুট এলিমেন্ট নির্দেশ করে এবং @XmlElement
অ্যানোটেশনটি প্রতিটি Java ফিল্ডকে XML উপাদান হিসেবে নির্দেশ করে।
XML Schema (XSD) কনফিগার করার পর, Java অবজেক্ট থেকে XML ফাইল তৈরি করা সম্ভব। নিচে দেখানো হল কিভাবে JAXB এবং Spring OXM ব্যবহার করে XML ফাইল তৈরি করা যায়।
Marshaller
ব্যবহার করে XML ফাইল তৈরি:@Autowired
private Jaxb2Marshaller marshaller;
public void marshalToXML(Person person) throws Exception {
// XML ফাইল লেখার জন্য
FileWriter writer = new FileWriter("person.xml");
// Java অবজেক্ট থেকে XML ফাইলে রূপান্তর
marshaller.marshal(person, new StreamResult(writer));
writer.close();
}
এখানে, marshal
মেথডটি Person
অবজেক্টকে XML ফাইলের মধ্যে রূপান্তর করবে এবং StreamResult
ব্যবহার করে XML ফাইলটি লেখা হবে।
যদি XML ফাইলের বৈধতা যাচাই করতে চান, তখন Spring OXM এবং JAXB এর মাধ্যমে XML ফাইলের সাথে XML Schema তুলনা করা এবং তা যাচাই করা সম্ভব।
এটি করার জন্য, আপনি JAXB
এর Unmarshaller
ব্যবহার করতে পারেন এবং Schema
সেট করে XML ফাইলের বৈধতা যাচাই করতে পারেন।
public Person unmarshalXML(String xml) throws Exception {
// XML স্কিমা দিয়ে XML ডেটা ভ্যালিডেট
SchemaFactory factory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
Schema schema = factory.newSchema(new File("person.xsd"));
JAXBContext jaxbContext = JAXBContext.newInstance(Person.class);
Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
unmarshaller.setSchema(schema); // স্কিমা সেট করা হচ্ছে
return (Person) unmarshaller.unmarshal(new StringReader(xml));
}
এখানে, XML স্কিমার সাথে XML ডেটার মিলের মাধ্যমে ডেটার বৈধতা যাচাই করা হচ্ছে।
Spring OXM এবং JAXB ব্যবহার করে XML Schema কনফিগার করা একটি শক্তিশালী পদ্ধতি যা Java অবজেক্ট এবং XML ডেটার মধ্যে সম্পর্ক স্থাপন এবং XML ডেটার বৈধতা নিশ্চিত করতে সাহায্য করে। XML Schema (XSD) ফাইল তৈরি করে, সেটি স্প্রিং কনফিগারেশনে সংযুক্ত করতে হয়, এবং JAXB ক্লাসের মাধ্যমে XML ডেটা তৈরি বা পড়া সম্ভব হয়। XML Schema Validation এর মাধ্যমে XML ডেটার নির্ভুলতা নিশ্চিত করা যায়।
Read more