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

SAX (Simple API for XML) প্রসেসিং - অ্যাপাচি জারসেস (Apache Xerces) - Java Technologies

406

Apache Xerces হল একটি শক্তিশালী XML প্যার্সিং লাইব্রেরি যা Java-এ SAX (Simple API for XML) প্যার্সিং সমর্থন করে। SAX প্যার্সিং হল ইভেন্ট-ভিত্তিক প্যার্সিং, যেখানে XML ডেটা একে একে প্রসেস করা হয়, এবং প্রতিটি এলিমেন্ট বা ট্যাগের জন্য একটি ইভেন্ট হ্যান্ডলার ট্রিগার করা হয়। SAX প্যার্সিং বড় XML ডেটা ফাইলের জন্য খুব কার্যকর, কারণ এটি মেমরিতে পুরো XML ডকুমেন্ট ধারণ না করে একে একে ডেটা প্রসেস করে।

এখানে, Apache Xerces ব্যবহার করে SAX Parsing এর একটি উদাহরণ দেওয়া হলো।


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

ধরা যাক, আমাদের একটি XML ফাইল রয়েছে যেটি কর্মী সম্পর্কিত তথ্য ধারণ করে, এবং আমরা SAX প্যার্সিং ব্যবহার করে XML ডেটার প্রতিটি কর্মী এলিমেন্ট প্রসেস করতে চাই।

1. Sample XML File (Employee.xml)

<?xml version="1.0" encoding="UTF-8"?>
<employees>
    <employee>
        <name>John Doe</name>
        <age>30</age>
        <department>Engineering</department>
    </employee>
    <employee>
        <name>Jane Smith</name>
        <age>25</age>
        <department>Marketing</department>
    </employee>
</employees>

এটি একটি সাধারণ XML ফাইল যেখানে employees রুট এলিমেন্ট এবং এর মধ্যে একাধিক employee এলিমেন্ট রয়েছে।


2. SAX প্যার্সিং কোড:

এখন আমরা SAX প্যার্সিং ব্যবহার করে এই XML ফাইলটি প্যার্স করবো এবং কর্মী সম্পর্কিত তথ্য প্রিন্ট করবো।

import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;
import org.apache.xerces.parsers.SAXParser;

public class SAXExample {

    public static void main(String[] args) {
        try {
            // SAXParser তৈরি করা
            SAXParser parser = new SAXParser();

            // XML ডকুমেন্ট প্রসেস করতে SAXHandler ব্যবহার করা
            SAXHandler handler = new SAXHandler();
            parser.setContentHandler(handler);

            // XML ফাইল প্যার্স করা
            parser.parse("src/Employee.xml");

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

class SAXHandler extends DefaultHandler {

    // XML ফাইলের এলিমেন্ট পড়ার সময় কি ঘটবে তা নির্ধারণ করা
    boolean isEmployee = false;
    boolean isName = false;
    boolean isAge = false;
    boolean isDepartment = false;

    @Override
    public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
        // যখন employee এলিমেন্ট শুরু হয়
        if (qName.equalsIgnoreCase("employee")) {
            isEmployee = true;
        }

        // যখন name এলিমেন্ট শুরু হয়
        if (qName.equalsIgnoreCase("name")) {
            isName = true;
        }

        // যখন age এলিমেন্ট শুরু হয়
        if (qName.equalsIgnoreCase("age")) {
            isAge = true;
        }

        // যখন department এলিমেন্ট শুরু হয়
        if (qName.equalsIgnoreCase("department")) {
            isDepartment = true;
        }
    }

    @Override
    public void characters(char[] ch, int start, int length) throws SAXException {
        // যখন নাম পড়া হবে
        if (isName) {
            System.out.println("Employee Name: " + new String(ch, start, length));
            isName = false;
        }

        // যখন বয়স পড়া হবে
        if (isAge) {
            System.out.println("Employee Age: " + new String(ch, start, length));
            isAge = false;
        }

        // যখন বিভাগ পড়া হবে
        if (isDepartment) {
            System.out.println("Employee Department: " + new String(ch, start, length));
            isDepartment = false;
        }
    }

    @Override
    public void endElement(String uri, String localName, String qName) throws SAXException {
        // যখন employee এলিমেন্ট শেষ হবে
        if (qName.equalsIgnoreCase("employee")) {
            System.out.println("-----------");
            isEmployee = false;
        }
    }
}

3. কোডের ব্যাখ্যা:

  1. SAXParser: SAXParser ব্যবহার করা হয়েছে XML ডেটা প্যার্স করতে। এটি SAX প্যার্সিং ব্যবস্থাপনা করে এবং ডকুমেন্টে প্রতিটি এলিমেন্ট প্রসেস করার জন্য একটি ContentHandler ব্যবহার করে।
  2. SAXHandler: SAXHandler একটি কাস্টম ক্লাস, যা DefaultHandler থেকে বংশিত। এর মধ্যে startElement(), characters(), এবং endElement() মেথড গুলি রয়েছে, যেগুলি বিভিন্ন XML ট্যাগের জন্য ইভেন্ট ট্রিগার করার সময় কাজ করবে।
    • startElement(): যখন কোনো XML এলিমেন্ট শুরু হয়, তখন এই মেথডটি কল হয়। এটি এলিমেন্টের নাম পরীক্ষা করে এবং যদি এটি employee, name, age, বা department হয়, তবে তাদের জন্য প্রাসঙ্গিক ফ্ল্যাগ সেট করে।
    • characters(): এই মেথডটি XML ট্যাগের মধ্যে টেক্সট কনটেন্ট পড়ে এবং তা প্রিন্ট করে। উদাহরণস্বরূপ, name, age, এবং department ট্যাগের তথ্য এই মেথডের মাধ্যমে প্রিন্ট হবে।
    • endElement(): যখন একটি XML ট্যাগের প্রক্রিয়া শেষ হয়, তখন এটি কল হয়। employee এলিমেন্ট শেষে একটি ড্যাশ প্রিন্ট করা হচ্ছে, যা প্রতিটি কর্মীর তথ্যের মধ্যে বিভাজন হিসেবে কাজ করবে।

4. আউটপুট:

এই প্রোগ্রামটি Employee.xml ফাইল থেকে ডেটা প্যার্স করবে এবং আউটপুট হিসেবে প্রিন্ট করবে:

Employee Name: John Doe
Employee Age: 30
Employee Department: Engineering
-----------
Employee Name: Jane Smith
Employee Age: 25
Employee Department: Marketing
-----------

এখানে:

  • Employee Name, Employee Age, এবং Employee Department এই তথ্য প্রতিটি কর্মী জন্য প্রিন্ট করা হয়েছে।
  • ----------- প্রতিটি কর্মীর তথ্যের মাঝে একটি বিভাজক হিসেবে কাজ করছে।

সারাংশ

SAX (Simple API for XML) প্যার্সিং হল একটি ইভেন্ট-ভিত্তিক প্যার্সিং পদ্ধতি, যেখানে XML ফাইলের প্রতিটি অংশ (ট্যাগ বা এলিমেন্ট) একে একে প্যার্স করা হয় এবং ইভেন্ট ট্রিগার করা হয়। Apache Xerces ব্যবহার করে SAX প্যার্সিং কার্যকরভাবে XML ডেটা প্রক্রিয়া করতে সহায়তা করে, বিশেষ করে বড় XML ফাইলের জন্য। উপরোক্ত উদাহরণে SAX প্যার্সিং ব্যবহার করে একটি XML ফাইল থেকে কর্মী সম্পর্কিত তথ্য এক্সট্র্যাক্ট করা হয়েছে।

Content added By
Promotion

Are you sure to start over?

Loading...