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

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

354

জাভা XML (Java XML API) হল একটি সেট API যা জাভা প্রোগ্রামিং ভাষায় XML ডেটা প্রসেস এবং ম্যানিপুলেট করতে ব্যবহৃত হয়। এই API বিভিন্ন ধরনের XML পার্সিং মেথড প্রদান করে, যা XML ডেটার মধ্যে তথ্য অনুসন্ধান, পরিবর্তন, এবং ট্রান্সফরমেশন (conversion) করতে সাহায্য করে।

SAX পার্সিং (Simple API for XML)

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

SAX পার্সিং এর কাজ করার পদ্ধতি:

  1. XML ডকুমেন্ট লোড করা: SAX পার্সার XML ডকুমেন্টকে সিকোয়েনশিয়ালি (লাইন বাই লাইন) রিড করে।
  2. ইভেন্ট ট্রিগার: XML ডকুমেন্টের প্রতিটি অংশ পড়ার সময় একটি নির্দিষ্ট ইভেন্ট ট্রিগার করা হয় যেমন:
    • স্টার্ট ট্যাগ
    • এনড ট্যাগ
    • ক্যারেক্টার ডেটা
  3. কাস্টম হ্যান্ডলার তৈরি করা: প্রোগ্রামারকে কাস্টম হ্যান্ডলার তৈরি করতে হয় যা প্রতিটি ইভেন্টের জন্য প্রতিক্রিয়া জানাবে (যেমন, স্টার্ট এলিমেন্ট, এন্ড এলিমেন্ট ইত্যাদি)।

SAX পার্সিং এর সুবিধা:

  • মেমরি এফিসিয়েন্সি: SAX পার্সিংয়ে পুরো XML ডকুমেন্ট মেমরিতে লোড করার প্রয়োজন নেই। এটি স্ট্রিমিং পার্সিং পদ্ধতি হওয়ায় এটি মেমরি কম ব্যবহার করে।
  • পারফরম্যান্স: এটি সাধারণত দ্রুত কারণ এটি একবারে পুরো ডকুমেন্ট লোড না করে, প্রতিটি অংশ পড়ে এবং তখনই প্রাসঙ্গিক কোড চালায়।

SAX পার্সিং এর অসুবিধা:

  • পড়ার জন্য সিকোয়েন্সিয়াল: SAX পার্সার একে একে ডকুমেন্টের অংশগুলো পড়ে এবং একটি সময়ের মধ্যে একটি নির্দিষ্ট অংশে যেতে পারে না, ফলে এটি এলিমেন্টগুলোর মধ্যে নেভিগেট করতে পারে না।
  • কোড কমপ্লেক্সিটি: SAX পার্সারকে ব্যবহার করতে হলে অনেক কোড লিখতে হয় এবং এর মানে কোডের গঠন জটিল হয়ে যায়।

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

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

উদাহরণ XML ডকুমেন্ট:

<?xml version="1.0" encoding="UTF-8"?>
<bookstore>
  <book>
    <title lang="en">Effective Java</title>
    <author>Joshua Bloch</author>
    <price>45.99</price>
  </book>
  <book>
    <title lang="en">Java Concurrency in Practice</title>
    <author>Brian Goetz</author>
    <price>39.99</price>
  </book>
</bookstore>

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

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

import javax.xml.parsers.*;

public class SAXParserExample extends DefaultHandler {
    
    // Method called when start tag is encountered
    public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
        if (qName.equalsIgnoreCase("book")) {
            System.out.println("Start of Book Element");
        } else if (qName.equalsIgnoreCase("title")) {
            System.out.println("Title: " + attributes.getValue("lang"));
        }
    }

    // Method called when end tag is encountered
    public void endElement(String uri, String localName, String qName) throws SAXException {
        if (qName.equalsIgnoreCase("book")) {
            System.out.println("End of Book Element");
        }
    }

    // Method called to process the text inside elements
    public void characters(char[] ch, int start, int length) throws SAXException {
        System.out.println("Text: " + new String(ch, start, length));
    }

    public static void main(String[] args) {
        try {
            // Initialize the SAX Parser
            SAXParserFactory factory = SAXParserFactory.newInstance();
            SAXParser saxParser = factory.newSAXParser();

            // Create a new instance of this class to handle the events
            SAXParserExample handler = new SAXParserExample();

            // Parse the XML file using the handler
            saxParser.parse("books.xml", handler);

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

ব্যাখ্যা:

  1. startElement: যখনই একটি নতুন এলিমেন্ট শুরু হয় (যেমন <book>), এই মেথডটি কল হয়। এর মধ্যে আমরা প্রাসঙ্গিক তথ্য যেমন এলিমেন্টের অ্যাট্রিবিউট্স দেখতে পারি।
  2. endElement: যখন একটি এলিমেন্ট শেষ হয় (যেমন </book>), এই মেথডটি কল হয়।
  3. characters: এটি এলিমেন্টের ভিতরের টেক্সট প্রক্রিয়া করতে ব্যবহৃত হয় (যেমন বইয়ের শিরোনাম বা লেখকের নাম)।

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

Content added By
Promotion

Are you sure to start over?

Loading...