DOM এর মাধ্যমে XML ডকুমেন্ট Parse করা

DOM (Document Object Model) পার্সার - জাভা এক্সএমএল (Java XML) - Java Technologies

348

Java XML ব্যবহার করে XML ডকুমেন্টগুলিকে প্রোগ্রামেটিকভাবে প্রক্রিয়া করা হয়। XML (eXtensible Markup Language) হল একটি মার্কআপ ভাষা যা ডাটা স্টোরেজ এবং তথ্য এক্সচেঞ্জের জন্য ব্যবহৃত হয়। Java-এর মধ্যে XML প্রক্রিয়া করার জন্য বেশ কয়েকটি API রয়েছে, এবং তার মধ্যে DOM (Document Object Model) সবচেয়ে জনপ্রিয় একটি পদ্ধতি।

DOM (Document Object Model) কী?

DOM হলো একটি ওয়েব স্ট্যান্ডার্ড যা XML বা HTML ডকুমেন্টের কাঠামোকে একটি অ‍বজেক্ট মডেল হিসেবে উপস্থাপন করে। এটি ডকুমেন্টের উপাদানগুলোকে একটি গাছের মতো (tree structure) সংগঠিত করে। DOM ব্যবহার করে আপনি XML ডকুমেন্টের উপাদানগুলোতে অ্যাক্সেস করতে এবং সেগুলোকে পরিবর্তন করতে পারেন।

DOM ব্যবহার করে XML ডকুমেন্ট Parse করা:

DOM পদ্ধতি ব্যবহার করে XML ডকুমেন্টকে পার্স করার জন্য Java-তে javax.xml.parsers প্যাকেজের DocumentBuilder ক্লাস ব্যবহার করা হয়। এটি XML ডকুমেন্টকে একটি ইনমেমরি অবজেক্ট মডেল (DOM tree) হিসাবে পার্স করে।

DOM এর মাধ্যমে XML ডকুমেন্ট পার্স করার সাধারণ পদক্ষেপ:

  1. DocumentBuilderFactory তৈরি করা:
    • প্রথমে DocumentBuilderFactory ক্লাস ব্যবহার করে একটি DocumentBuilder তৈরি করতে হবে।
  2. XML ফাইল পড়া:
    • পরে DocumentBuilder ব্যবহার করে XML ফাইলটি পার্স করা হয় এবং একটি Document অবজেক্ট তৈরি হয়।
  3. ডকুমেন্ট ট্রাভার্স করা:
    • এরপর DOM ট্রি গঠিত হয়, যেখানে সমস্ত XML ট্যাগ এবং উপাদানগুলো একটি গাছের আকারে থাকে। NodeList বা Element অবজেক্ট ব্যবহার করে এগুলো অ্যাক্সেস করা যায়।

উদাহরণ কোড:

এখানে একটি XML ডকুমেন্ট পার্স করার একটি উদাহরণ দেওয়া হলো:

XML ফাইল (example.xml):

<?xml version="1.0" encoding="UTF-8"?>
<bookstore>
    <book>
        <title lang="en">Java Programming</title>
        <author>John Doe</author>
        <year>2024</year>
        <price>29.99</price>
    </book>
    <book>
        <title lang="en">Advanced Java</title>
        <author>Jane Smith</author>
        <year>2023</year>
        <price>39.99</price>
    </book>
</bookstore>

Java কোড (DOM ব্যবহার করে XML পার্স করা):

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.*;

import java.io.File;

public class XMLParser {
    public static void main(String[] args) {
        try {
            // DocumentBuilderFactory তৈরি করা
            DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
            DocumentBuilder builder = factory.newDocumentBuilder();

            // XML ফাইল পার্স করা
            File xmlFile = new File("example.xml");
            Document document = builder.parse(xmlFile);

            // ডকুমেন্ট গাছের রুট উপাদান (bookstore) পাওয়া
            Element rootElement = document.getDocumentElement();

            // রুট উপাদানের নাম প্রিন্ট করা
            System.out.println("Root element: " + rootElement.getNodeName());

            // "book" উপাদানসমূহকে খুঁজে বের করা
            NodeList bookList = document.getElementsByTagName("book");

            for (int i = 0; i < bookList.getLength(); i++) {
                Node bookNode = bookList.item(i);
                if (bookNode.getNodeType() == Node.ELEMENT_NODE) {
                    Element book = (Element) bookNode;

                    // বইয়ের নাম প্রিন্ট করা
                    String title = book.getElementsByTagName("title").item(0).getTextContent();
                    System.out.println("Title: " + title);

                    // লেখকের নাম প্রিন্ট করা
                    String author = book.getElementsByTagName("author").item(0).getTextContent();
                    System.out.println("Author: " + author);

                    // প্রকাশের বছর প্রিন্ট করা
                    String year = book.getElementsByTagName("year").item(0).getTextContent();
                    System.out.println("Year: " + year);

                    // দাম প্রিন্ট করা
                    String price = book.getElementsByTagName("price").item(0).getTextContent();
                    System.out.println("Price: " + price);

                    System.out.println();
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

ব্যাখ্যা:

  1. DocumentBuilderFactory: এটি একটি ফ্যাক্টরি ক্লাস যা DocumentBuilder তৈরি করতে সাহায্য করে।
  2. DocumentBuilder: এটি একটি ক্লাস যা XML ডকুমেন্টকে পার্স করে এবং একটি Document অবজেক্ট তৈরি করে।
  3. Document: এটি একটি ডকুমেন্ট অবজেক্ট যা XML ডকুমেন্টের মধ্যে সমস্ত ডাটা এবং কাঠামো ধারণ করে।
  4. NodeList: এটি একটি তালিকা যা Node অবজেক্ট ধারণ করে। একে ব্যবহার করে XML ডকুমেন্টের বিভিন্ন ট্যাগগুলোর মধ্যে ট্রাভার্স করা হয়।
  5. Element: এটি একটি XML ট্যাগের প্রতিনিধিত্ব করে, যেমন <book>, <title>, ইত্যাদি।

DOM এর সুবিধা:

  • সম্পূর্ণ ডকুমেন্ট অ্যাক্সেস: DOM একবার XML ডকুমেন্ট পার্স করার পরে পুরো ডকুমেন্টের উপাদানগুলো মেমরিতে থাকে, এবং আপনি যেকোনো অংশে অ্যাক্সেস করতে পারেন।
  • ডকুমেন্ট মডিফিকেশন: DOM ব্যবহার করে XML ডকুমেন্টে পরিবর্তন করা (অ্যাড, রিমুভ, আপডেট) সম্ভব।
  • ডাটা এনট্রিপ্রেটেশন: XML ডকুমেন্টের মধ্যে ডাটা ট্রাভার্স বা ফিল্টার করার জন্য DOM সুবিধাজনক।

DOM এর অসুবিধা:

  • মেমরি ব্যবহার: XML ডকুমেন্ট সম্পূর্ণ মেমরিতে লোড হয়, যা বড় ডকুমেন্টের ক্ষেত্রে মেমরি সমস্যা সৃষ্টি করতে পারে।
  • পারফরম্যান্স: DOM মডেল গঠন করতে সময় নেয়, বিশেষত বড় XML ডকুমেন্টের জন্য।

DOM পদ্ধতি XML ডকুমেন্টকে পার্স এবং ম্যানিপুলেট করার জন্য একটি শক্তিশালী টুল। এটি সাধারণত ছোট থেকে মাঝারি আকারের XML ডকুমেন্টের জন্য ব্যবহার করা হয়। বড় XML ডকুমেন্টের জন্য অন্য পদ্ধতি যেমন SAX বা StAX ব্যবহার করা যেতে পারে।

Content added By
Promotion

Are you sure to start over?

Loading...