PHP SimpleXML Parser
পিএইচপির অন্যান্য এক্সটেনশন গুলোর ন্যায় SimpleXML ও একটি পিএইচপি এক্সটেনশন(extension) যা দ্বারা আমরা খুব সহজেই XML ডেটা পেতে পারি এবং ডেটা গুলো নিপূণভাবে পরিচালনা করতে পারি।
SimpleXML Parser
SimpleXML হচ্ছে Tree-Based টাইপের অন্তর্ভুক্ত একটি পার্সার।
আপনি যদি পূর্ব থেকেই XML ডকুমেন্টের গঠন অথবা লেআউট সম্পর্কে জেনে থাকেন তাহলে SimpleXML এর মাধ্যমে আপনি খুব সহজেই ডকুমেন্টের এলিমেন্টের নাম, এট্রিবিউট এবং টেক্সট কন্টেন্ট পেতে পারেন।
SimpleXML একটি XML ডকুমেন্টকে ডেটা স্ট্রাকচারে রূপান্তরিত করে। ফলে আপনি এটিকে array এবং object এর মত পুনারাবৃত্তি(iterate) করতে পারবেন।
XML ডকুমেন্ট এর একটি এলিমেন্টের ডেটা পড়ার জন্য DOM অথবা Expat Parser এর তুলনায় SimpleXML এ অনেক কম কোড লিখতে হয়।
ইনস্টলেশন
পিএইচপি ভার্সন-৫ থেকে SimpleXML ফাংশনসমূহ পিএইচপি কোর ফাইলের সাথে যুক্ত হওয়ায় এই ফাংশনসমূহ ব্যবহারের জন্য কোনো ইনস্টলেশনের প্রয়োজন নাই।
SimpleXML ব্যবহার করে স্ট্রিং থেকে তথ্য পড়া
স্ট্রিং থেকে এক্সএমএল ডেটা পড়ার জন্য
simplexml_load_string()
ফাংশনটি ব্যবহার করা হয়।
ধরুন, আমাদের একটি স্ট্রিং ভ্যারিয়েবল $xmlData রয়েছে যা XML ডেটা ধারন করে। যেমনঃ
<?php
$xmlData = "<?xml version='1.0' encoding='UTF-8'?>
<wish>
<to>Tamjid</to>
<from>Azizur</from>
<subject>Wish</subject>
<message>Best wishes for you.</message>
</wish>";
?>
একটি স্ট্রিং থেকে তথ্য পড়ার জন্য কিভাবে simplexml_load_string()
ফাংশন ব্যবহার করবেন নিম্নের উদাহরণে দেখানো হলোঃ
<?php
$xmlData = "<?xml version='1.0' encoding='UTF-8'?>
<wish>
<to>Tamjid</to>
<from>Azizur</from>
<subject>Wish</subject>
<message>Best wishes for you.</message>
</wish>";
?>
<?php
$xml = simplexml_load_string($xmlData) or die("Error...");
print_r($xml);
?>
SimpleXMLElement Object ( [to]=>Tamjid [from]=>Azizur [subject]=>Wish [message]=>Best wishes for you. )
এরর নিয়ন্ত্রণে কিছু পরামর্শঃ XML ডকুমেন্টি লোড হওয়ার সময় XML এর সমস্ত ভ্রান্তি(error) পু্নরূদ্ধার করতে libxml ফাংশনসমূহ ব্যবহার করুন। তারপরে ভ্রান্তিসমূহ পূনরাবৃত্তি(iterate) করুন। নিম্নের উদাহরণটি একটি অসম্পূর্ণ স্ট্রিং লোড করার চেষ্টা করবেঃ
<?php
libxml_use_internal_errors(true);
$xmlData = "<?xml version='1.0' encoding='UTF-8'?>
<document>
<user>Tamjid Hasan</wronguser>
<email>tamjid@example.com</wrongemail>
</document>";
?>
<?php
$xml = simplexml_load_string($xmlData);
if ($xml === false) {
echo "Failed loading XML: ";
foreach(libxml_get_errors() as $error) {
echo "<br>", $error->message;
}
} else {
print_r($xml);
}
?>
Failed loading XML: Opening and ending tag mismatch: user line 3 and wronguser Opening and ending tag mismatch: email line 4 and wrongemail
SimpleXML ব্যবহার করে ফাইল থেকে তথ্য পড়া
ফাইল থেকে XML ডেটা পড়ার জন্য
simplexml_load_file()
ফাংশনটি ব্যবহার করা হয়।
ধরুন, আমাদের "wish.xml" নামে একটি 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>
একটি ফাইল থেকে তথ্য পড়ার জন্য কিভাবে simplexml_load_file()
ফাংশন ব্যবহার করবেন নিম্নের উদাহরণে দেখানো হলোঃ
<?php
$xml = simplexml_load_file("wish.xml") or die("Error...");
print_r($xml);
?>
SimpleXMLElement Object ( [to]=>Tamjid [from]=>Azizur [subject]=>Wish [message]=>Best wishes for you.)