এক্সএমএল ডোম পার্সার
বিল্ট-ইন ডোম পার্সার(parser) এর মাধ্যমে পিএইচপিতে এক্সএমএল ডকুমেন্ট প্রক্রিয়া করা সম্ভব।
এক্সএমএল ডোম পার্সার
DOM Parser হলো Tree-Based Parser।
নিম্নের নমুনা এক্সএমএল ডকুমেন্টটি লক্ষ্য করুনঃ
<?xml version="1.0" encoding="UTF-8"?>
<from>Azizur</from>
DOM একটি এক্সএমএল ডকুমেন্টকে গাছ হিসাবে দেখে। গাছের যেমন একটি মূল থাকে এবং এই মূলের অনেক শাখা প্রশাখা থাকে। ঠিক একই ভাবে এক্সএমএল ডকুমেন্টটি একটি মূল(root) এবং এলিমেন্টসমূহ হলো এর শাখা প্রশাখাঃ
- প্রথম ধাপঃ এক্সএমএল ডকুমেন্ট
- দ্বিতীয় ধাপঃ রুট/মূল এলিমেন্ট - <from>
- তৃতীয় ধাপঃ টেক্সট এলিমেন্ট - "Azizur"
DOM ফাংশনসমূহ পিএইচপি কোর ফাইলের অংশ হওয়ায় এই ফাংশনসমূহ ব্যবহার করার জন্য কোনো ইনস্টলেশনের প্রয়োজন নাই।
একটি সাধারন এক্সএমএল ফাইল
নিম্নের 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>
এক্সএমএল লোড এবং আউটপুট
নিম্নের উদাহরণের মাধ্যমে আমরা এক্সএমএল পার্সার আরম্ভ করে এক্সএমএল ডকুমেন্ট লোড করবো এবং এর আউটপুট নিবঃ
<!DOCTYPE html>
<html>
<head>
<title>পিএইচপি এক্সএমএল লোড এবং এর আউটপুট</title>
</head>
<body>
<?php
$xmlDocument = new DOMDocument();
$xmlDocument->load("wish.xml");
print $xmlDocument->saveXML();
?>
</body>
</html>
Tamjid Azizur Wish Best wishes for you.
উপরের উদাহরণে প্রথমে একটি DOMDocument-Object তৈরি হয় এবং এতে "wish.xml" ফাইল থেকে এক্সএমএল ডকুমেন্ট লোড হয়।
তারপর saveXML() ফাংশন অভ্যন্তরীণ এক্সএমএল ডকুমেন্টকে একটি স্ট্রিং-এর মধ্যে রাখে। আর তাই আমরা print স্টেটমেন্ট এর মাধ্যমে আউটপুট নিই।
আপনি যদি উপরের ফলাফলের জন্য ব্রাউজারে "View source" সিলেক্ট করেন তাহলে নিম্নের ন্যায় এইচটিএমএল কোড দেখতে পাবেনঃ
<?xml version="1.0" encoding="UTF-8"?>
<wish>
<to>Tamjid</to>
<from>Azizur</from>
<subject>Wish</subject>
<message>Best wishes for you.</message>
</wish>
সম্পূর্ণ এক্সএমএল লুপ করা
নিম্নের উদাহরণে আমরা এক্সএমএল পার্সার আরম্ভ করে এক্সএমএল ডকুমেন্ট লোড করবো এবং লুপের সাহায্যে <wish> এলিমেন্টের অন্তর্ভুক্ত সকল এলিমেন্ট এর আউটপুট নিবঃ
<!DOCTYPE html>
<html>
<head>
<title>পিএইচপি উদাহরণ</title>
</head>
<body>
<?php
$xmlDocument = new DOMDocument();
$xmlDocument->load("wish.xml");
$wish = $xmlDocument->documentElement;
foreach ($wish->childNodes AS $item) {
print $item->nodeName . " = " . $item->nodeValue . "<br>";
}
?>
</body>
</html>
#text =
to = Tamjid
#text =
from = Azizur
#text =
subject = Wish
#text =
message = Best wishes for you.
#text =
উপরের উদাহরনে লক্ষ্য করলে দেখবেন প্রতি দুটি এলিমেন্টের মধ্যে একটি খালি টেক্সট নোড রয়েছে।
যখন এক্সএমএল তৈরি হয় তখন দুটি নোড এর মধ্যে প্রায়ই স্পেস থাকে। আর এক্সএমএল ডোম পার্সার এই খালি স্পেসসমূহকে সাধারন এলিমেন্ট হিসাবে বিবেচনা করে। আপনি যদি এই ব্যাপারে সচেতন না থাকেন তাহলে এটি মাঝে মধ্যে সমস্যার সৃষ্টি করতে পারে।
এক্সএমএল ডোম সম্পর্কে জানতে আমাদের এক্সএমএল টিউটোরিয়াল ভিজিট করুন।