SAX এর মাধ্যমে Sequential XML ডেটা Parse করা

SAX (Simple API for XML) পার্সার - জাভা এক্সএমএল (Java XML) - Java Technologies

383

Java XML হলো XML (Extensible Markup Language) ডেটা প্রসেস এবং ম্যানিপুলেট করার জন্য Java-তে উপলব্ধ একটি শক্তিশালী প্রযুক্তি। XML একটি সাধারণ ভাষা যা ডেটাকে স্টোর, ট্রান্সফার, এবং প্রক্রিয়া করার জন্য ব্যবহৃত হয়, যেখানে ডেটা মানব-পঠনযোগ্য এবং মেশিন-পঠনযোগ্য উভয়ভাবে থাকে। Java XML-এ SAX (Simple API for XML) হলো একটি প্রখ্যাত এবং জনপ্রিয় পদ্ধতি যা XML ডেটা পার্সিংয়ের জন্য ব্যবহৃত হয়।

SAX এর মাধ্যমে Sequential XML ডেটা Parse করা:

SAX হলো একটি ইভেন্ট-ভিত্তিক XML Parsing পদ্ধতি, যা ডেটাকে সিকোয়েন্সিয়ালি (ধাপে ধাপে) প্রক্রিয়া করে। SAX পার্সার XML ডেটা ইনপুট ফাইল থেকে পড়ার সময় বিভিন্ন ইভেন্ট (যেমন স্টার্ট ট্যাগ, এন্ড ট্যাগ, টেক্সট ইত্যাদি) ট্রিগার করে এবং ব্যবহারকারীকে সেগুলোর জন্য হ্যান্ডলার বা কলব্যাক মেথডের মাধ্যমে কাজ করার সুযোগ দেয়।

SAX Parsing সাধারণত কম মেমরি ব্যবহার করে কারণ এটি ডকুমেন্টের পুরো কন্টেন্ট একসাথে মেমরিতে লোড করে না, বরং একে একে ডেটা প্রসেস করে। এর ফলে এটি বড় XML ডেটা ফাইল পার্স করার জন্য উপযুক্ত।

SAX পার্সিং এর কার্যপ্রণালী:

  1. XML ডকুমেন্ট লোডিং: SAX পার্সার XML ডকুমেন্টটি লোড করতে থাকে এবং প্রতিটি ট্যাগ বা ডেটা ইভেন্টের জন্য কলব্যাক মেথডটি কল করে।
  2. এভেন্ট ট্রিগারিং: যখন একটি ট্যাগ শুরু হয় (স্টার্ট ট্যাগ), শেষ হয় (এন্ড ট্যাগ), বা যখন কোনো টেক্সট ডেটা উপস্থিত হয়, তখন সেই সম্পর্কিত ইভেন্টটি ট্রিগার হয়।
  3. ডেটা প্রক্রিয়া: পার্সার যখন XML ডকুমেন্ট থেকে ডেটা পায়, তখন সেটা প্রাসঙ্গিক হ্যান্ডলার মেথডে পাঠিয়ে দেওয়া হয়।
  4. পার্সিং সম্পন্ন: ডকুমেন্টের শেষে, পার্সার প্রক্রিয়াটি শেষ করে এবং সাধারণত ক্লোজ/শেষের ইভেন্ট ট্রিগার হয়।

SAX-এর সুবিধা:

  1. কম মেমরি ব্যবহার: SAX পার্সার ডকুমেন্টের পুরো কন্টেন্ট একসাথে মেমরিতে লোড করে না, তাই এটি বড় XML ফাইলের জন্য উপযোগী।
  2. সিকোয়েন্সিয়াল এক্সেস: XML ডেটা সিকোয়েন্সিয়ালি প্রসেস করতে পারে, যা বড় ডেটাসেটের জন্য অনেক সুবিধাজনক।
  3. ফাস্ট পার্সিং: ইভেন্ট-ভিত্তিক প্রক্রিয়ার কারণে পার্সিং দ্রুত ঘটে।

SAX-এর অসুবিধা:

  1. ডেটার সম্পূর্ণ ভিউ নেই: SAX পার্সার ডেটা ইনমেমরি রিটেইন করে না, তাই কোনো অংশের সাথে কাজ করার জন্য আপনাকে সঠিক ইভেন্টে কোড লিখতে হবে।
  2. কন্ট্রোলের অভাব: SAX ইভেন্ট-ভিত্তিক, তাই ডেটাকে যেভাবে চান তেমনভাবে পরিবর্তন বা নিয়ন্ত্রণ করা কঠিন হতে পারে। এটি তুলনামূলকভাবে কম ফ্লেক্সিবল।

SAX পার্সিং উদাহরণ:

import org.xml.sax.*;
import org.xml.sax.helpers.*;
import java.io.*;

public class SAXParserExample extends DefaultHandler {

    // XML ট্যাগের শুরু হওয়া ইভেন্ট হ্যান্ডলিং
    public void startElement(String uri, String localName, String qName, Attributes attributes) {
        System.out.println("Start Element: " + qName);
    }

    // XML ট্যাগের শেষ হওয়া ইভেন্ট হ্যান্ডলিং
    public void endElement(String uri, String localName, String qName) {
        System.out.println("End Element: " + qName);
    }

    // XML ফাইল থেকে টেক্সট ডেটা পাওয়া গেলে ইভেন্ট হ্যান্ডলিং
    public void characters(char[] ch, int start, int length) {
        System.out.println("Text: " + new String(ch, start, length));
    }

    public static void main(String[] args) {
        try {
            // SAX পার্সারের জন্য ফাইল তৈরি
            SAXParserFactory factory = SAXParserFactory.newInstance();
            SAXParser saxParser = factory.newSAXParser();
            
            // XML ফাইল পার্স করা
            File inputFile = new File("sample.xml");
            SAXParserExample handler = new SAXParserExample();
            saxParser.parse(inputFile, handler);

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

উদাহরণ ব্যাখ্যা:

  1. startElement(): যখন একটি নতুন XML ট্যাগ শুরু হয় (যেমন <name>), তখন এই মেথডটি কল হয়।
  2. endElement(): যখন XML ট্যাগ শেষ হয় (যেমন </name>), তখন এই মেথডটি কল হয়।
  3. characters(): XML ট্যাগের ভিতরের টেক্সট ডেটা (যেমন John Doe) যখন পাওয়া যায়, তখন এই মেথডটি কল হয়।

SAX একটি শক্তিশালী এবং মেমরি-দক্ষ XML পার্সিং পদ্ধতি যা বড় XML ডেটা ফাইলগুলির জন্য আদর্শ। এটি ইভেন্ট-ভিত্তিক, যা ডেটাকে সিকোয়েন্সিয়ালি প্রক্রিয়া করে এবং কম মেমরি ব্যবহার করে। SAX পার্সিং করার সময় অনেক সাবধানতার সাথে ইভেন্টগুলো ম্যানেজ করতে হয় এবং এর জন্য ডেটাকে পুরোপুরি মেমরিতে লোড করার সুযোগ থাকে না। SAX XML পার্সিং সাধারণত সিস্টেম রিসোর্স কম খরচে XML ডেটা প্রক্রিয়া করার জন্য উপযুক্ত।

Content added By
Promotion

Are you sure to start over?

Loading...