Apache Xerces হল একটি জনপ্রিয় XML পার্সার লাইব্রেরি যা DOM (Document Object Model) এবং SAX (Simple API for XML) পার্সিং সমর্থন করে। তবে Xerces-এর মাধ্যমে XML ডেটাকে Java Object-এ রূপান্তর (Deserialization) এবং Object থেকে XML-এ রূপান্তর (Serialization) করা খুবই সহজ এবং কার্যকরী।
এখানে আমরা দেখব কিভাবে Apache Xerces ব্যবহার করে XML ডেটাকে Java Object-এ রূপান্তর এবং Java Object থেকে XML এ রূপান্তর করা যায়। আমরা DOM পদ্ধতি ব্যবহার করব, যা XML ডকুমেন্টকে একটি গঠনমূলক অবজেক্টে রূপান্তর করবে এবং পরবর্তীতে সেই অবজেক্টকে XML ফরম্যাটে সিরিয়ালাইজ করবে।
XML ডেটা কে Java Object-এ রূপান্তর করতে, Apache Xerces এর DOM পার্সার ব্যবহার করা হবে। এর মাধ্যমে XML ফাইল পার্স করা হবে এবং DOM ট্রি স্ট্রাকচারে রূপান্তরিত হবে।
Step 1: XML ডকুমেন্ট (example.xml)
<bookstore>
<book>
<title>Learn XML</title>
<author>John Smith</author>
<price>29.99</price>
</book>
<book>
<title>Advanced XML</title>
<author>Jane Doe</author>
<price>39.99</price>
</book>
</bookstore>
Step 2: Java Object (Book.java)
XML ডেটাকে Java Object-এ রূপান্তর করতে, প্রথমে Book ক্লাস তৈরি করতে হবে।
public class Book {
private String title;
private String author;
private double price;
// Constructor, Getters and Setters
public Book(String title, String author, double price) {
this.title = title;
this.author = author;
this.price = price;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
}
Step 3: XML থেকে Java Object এ রূপান্তর
Apache Xerces DOM API ব্যবহার করে XML ডকুমেন্ট থেকে Java Object তৈরি করা হবে। নিচে কোড উদাহরণ দেওয়া হলো:
import org.apache.xerces.parsers.DOMParser;
import org.w3c.dom.*;
import java.io.File;
public class XMLToObject {
public static void main(String[] args) {
try {
// Create DOMParser instance
DOMParser parser = new DOMParser();
// Enable XML features
parser.setFeature("http://apache.org/xml/features/allow-java-encodings", true);
// Parse the XML file
File xmlFile = new File("example.xml");
parser.parse(xmlFile.toURI().toString());
// Get the document
Document document = parser.getDocument();
document.getDocumentElement().normalize();
// Loop through the books
NodeList nodeList = document.getElementsByTagName("book");
for (int i = 0; i < nodeList.getLength(); i++) {
Node node = nodeList.item(i);
if (node.getNodeType() == Node.ELEMENT_NODE) {
Element element = (Element) node;
String title = element.getElementsByTagName("title").item(0).getTextContent();
String author = element.getElementsByTagName("author").item(0).getTextContent();
double price = Double.parseDouble(element.getElementsByTagName("price").item(0).getTextContent());
// Create Book object
Book book = new Book(title, author, price);
System.out.println("Book Title: " + book.getTitle());
System.out.println("Book Author: " + book.getAuthor());
System.out.println("Book Price: " + book.getPrice());
System.out.println();
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
Output:
Book Title: Learn XML
Book Author: John Smith
Book Price: 29.99
Book Title: Advanced XML
Book Author: Jane Doe
Book Price: 39.99
এখানে, DOMParser ব্যবহার করে XML ফাইল পার্স করা হয়েছে এবং প্রত্যেক book ট্যাগের মধ্যে থাকা title, author এবং price এক্সট্র্যাক্ট করে Book অবজেক্টে সেট করা হয়েছে।
Object থেকে XML এ রূপান্তর (Serialization)
এখন, Java Object থেকে XML এ রূপান্তর করতে হবে। Apache Xerces ব্যবহার করে XML ফরম্যাটে সিরিয়ালাইজেশন করা হবে।
Step 1: Java Object থেকে XML এ রূপান্তর
এখানে আমরা Book অবজেক্টকে XML ফরম্যাটে রূপান্তর করার জন্য DOM পার্সার ব্যবহার করব।
import org.apache.xerces.parsers.DOMParser;
import org.w3c.dom.*;
import javax.xml.transform.*;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import java.io.File;
public class ObjectToXML {
public static void main(String[] args) {
try {
// Create a new Document
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document document = builder.newDocument();
// Create root element <bookstore>
Element bookstore = document.createElement("bookstore");
document.appendChild(bookstore);
// Create book element
Element book = document.createElement("book");
bookstore.appendChild(book);
// Create title, author, and price elements
Element title = document.createElement("title");
title.appendChild(document.createTextNode("Learn XML"));
book.appendChild(title);
Element author = document.createElement("author");
author.appendChild(document.createTextNode("John Smith"));
book.appendChild(author);
Element price = document.createElement("price");
price.appendChild(document.createTextNode("29.99"));
book.appendChild(price);
// Prepare the Transformer
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
// Set output formatting
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
// Convert the DOM object to XML and write to file
DOMSource source = new DOMSource(document);
StreamResult result = new StreamResult(new File("output.xml"));
transformer.transform(source, result);
System.out.println("XML file created successfully!");
} catch (Exception e) {
e.printStackTrace();
}
}
}
Output (output.xml):
<?xml version="1.0" encoding="UTF-8"?>
<bookstore>
<book>
<title>Learn XML</title>
<author>John Smith</author>
<price>29.99</price>
</book>
</bookstore>
এখানে, Document অবজেক্টে Java Object (যেমন Book অবজেক্টের ডেটা) যোগ করে DOM গঠন করা হয়েছে এবং তারপর Transformer ব্যবহার করে এটি XML ফরম্যাটে সিরিয়ালাইজ করা হয়েছে।
সারাংশ
Apache Xerces লাইব্রেরি ব্যবহার করে XML ডেটা কে Java Object-এ রূপান্তর (Deserialization) এবং Java Object থেকে XML-এ রূপান্তর (Serialization) করতে বেশ সহজ এবং কার্যকরী পদ্ধতি পাওয়া যায়। DOM পার্সার ব্যবহার করে XML ডেটা পার্স এবং সিরিয়ালাইজেশনের জন্য Xerces একটি শক্তিশালী টুল সরবরাহ করে, যা XML ডকুমেন্টের উপাদান অ্যাক্সেস এবং প্রসেস করার জন্য খুবই কার্যকরী।
Read more