PHP XML Expat Parser
XML Expat Parser পিএইচপি কোর ফাইলের অংশ। এটি ব্যবহারের জন্য কোন ইনস্টলের প্রয়োজন নাই। কিছু নিজস্ব(built-in) ফাংশনের মাধ্যমে আমরা XML ডকুমেন্টকে পিএইচপিতে প্রসেস করতে পারি।
XML Expat Parser
XML এক্সপ্যাট পার্সার হলো event-based Parser।
XML ডকুমেন্ট থেকে নেওয়া নিম্নের কোডটুকু লক্ষ্য করুনঃ
<from>Azizur</from>
Event-Based Parser উপরের XML ডকুমেন্টকে তিনটি ইভেন্টের সিরিজে রুপান্তরিত করেঃ
- from এলিমেন্ট শুরু হয়।
- ভ্যালুঃ Azizur দ্বারা CDATA সেকশন শুরু হয়।
- from এলিমেন্ট শেষ হয়।
একটি সাধারন XML ফাইল
নিম্নের wish.xml ফাইলটি আমাদের উদাহরণে ব্যবহার করবোঃ
উদাহরণঃ wish.xml ফাইল
<?xml version="1.0" encoding="UTF-8"?>
<wish>
<to>Tamjid</to>
<from>Azizur</from>
<subject>Wish</subject>
<message>Best wishes for you.</message>
</wish>
XML এক্সপ্যাট পার্সার ইনিশিয়ালাইজ করা
আমরা XML এক্সপ্যাট পার্সারকে পিএইচপিতে ইনিশিয়ালাইজ(initialize ) করতে চাই। তাই আমরা এক্সএমএল এর বিভিন্ন ইভেন্ট এর জন্য কিছু নিয়ন্ত্রক(handler) ডিফান্ড করবো। তারপর XML ফাইলটি পার্স(parse) করবো।
উদাহরণ
<?php
// XML পার্সার(parser) সক্রিয় হবে।
$parser=xml_parser_create();
// এলিমেন্টের শুরুতে ব্যবহৃত ফাংশন
function start($parser,$element,$element_attribute) {
switch($element) {
case "WISH":
echo "-- Wish --<br>";
break;
case "TO":
echo "To: ";
break;
case "FROM":
echo "From: ";
break;
case "SUBJECT":
echo "Subject: ";
break;
case "MESSAGE":
echo "Message: ";
}
}
// একটি এলিমেন্টের শেষে ব্যবহৃত ফাংশন
function stop($parser,$element) {
echo "<br>";
}
// ক্যারেক্টার ডাটা খোঁজার সময় ব্যবহৃত ফাংশন
function char($parser,$data) {
echo $data;
}
// এলিমেন্টের হ্যান্ডেলার নির্ধারণ
xml_set_element_handler($parser,"start","stop");
// ডাটা হ্যান্ডেলার নির্ধারণ
xml_set_character_data_handler($parser,"char");
// XML ফাইল ওপেন হবে
$fp=fopen("wish.xml","r");
// ডাটা পড়বে
while ($data=fread($fp,4096)) {
xml_parse($parser,$data,feof($fp)) or
die (sprintf("Error: %s at line %d",
xml_error_string(xml_get_error_code($parser)),
xml_get_current_line_number($parser)));
}
// XML পার্সার মুক্ত হবে
xml_parser_free($parser);
?>
ফলাফল
-- Wish --
To: Tamjid
From: Azizur
Subject: Wish
Message: Best wishes for you.
উদাহরণের ব্যাখ্যাঃ
- xml_parser_create() ফাংশনের মাধ্যমে XML পার্সার শুরু হবে।
- বিভিন্ন ইভেন্ট হ্যান্ডেলার এর সাথে ব্যবহার এর জন্য ফাংশন তৈরি করতে হবে।
- পার্সার যখন শুরু এবং শেষ ট্যাগ এর সাক্ষাৎ পায় তখন কোন ফাংশনটি সম্পাদিত হবে তা নির্ধারন করার জন্য xml_set_element_handler() ফাংশনটি সংযোজন করা হয়েছে।
- পার্সার যখন ক্যারেক্টার ডেটার সাক্ষাৎ পায় তখন কোন ফাংশনটি সম্পাদিত হবে তা নির্ধারন করার জন্য xml_set_character_data_handler() ফাংশনটি সংযোজন করা হয়েছে।
- xml_parse() ফাংশন এর মাধ্যমে "wish.xml" ফাইলটি পার্স করা হয়েছে।
- কোনো ত্রুটি থাকলে xml_error_string() ফাংশনটি XML ত্রুটি(error) গুলোকে আক্ষরিক বর্ণনায় রূপান্তর করবে।
- xml_parser_create() ফাংশন দ্বারা দখলকৃত মেমোরি খালি করতে xml_parser_free() ফাংশনটি ব্যবহার করা হয়েছে।