পিএইচপি – এক্সএমএল DOM পার্সার (PHP XML DOM Parser in Bangla)

শেখ মাহফুজুর রহমান

পিএইচপি'র বিল্ট-ইন ডম (DOM) পার্সারের জন্য পিএইচপি'তে এক্সএমএল ডকুমেন্ট প্রসেস করা সম্ভব হয়েছে।

 

এক্সএমএল DOM পার্সার

DOM পার্সার একটি ট্রি-বেজড (DOM ট্রি) পার্সার। নিচের এক্সএমএল ডকুমেন্ট ফ্র্যাকশনটির দিকে তাকানঃ


<?xml version="1.0" encoding="UTF-8"?>
<from>Jani</from>

 

DOM উপরের এক্সএমএল'টিকে একটি ট্রি স্ট্রাকচার হিসেবে দেখেঃ

লেভেল ১: এক্সএমএল ডকুমেন্ট

লেভেল ২: রুট এলিমেন্টঃ

লেভেল ৩: টেক্সট এলিমেন্টঃ "Jani"

 

ইন্সটলেশন

DOM পার্সার ফাংশনগুলো পিএইচপি কোরের অংশ। এই ফাংশনগুলোকে ব্যবহার করার জন্য কোন ইন্সটলেশনের দরকার পড়েনা।

একটি এক্সএমএল ফাইল

নিচের এক্সএমএল ফাইলটি আমাদের উদাহরণে ব্যবহৃত হবেঃ


<?xml version="1.0" encoding="UTF-8"?>
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>

 

লোড এবং এক্সএমএল আউটপুট

আমরা চাই এক্সএমএল পার্সারটিকে চালু করতে, এক্সএমএল'টিকে লোড করতে এবং এটা থেকে আউটপুট পেতে।

উদাহরণঃ


<?php
$xmlDoc = new DOMDocument();
$xmlDoc->load("note.xml");

print $xmlDoc->saveXML();
?>

 

উপরের কোডটির আউটপুট হবেঃ


Tove Jani Reminder Don't forget me this weekend!


 

আপনি যদি ব্রাউজার উইন্ডোতে "View source" সিলেক্ট করেন তাহলে নিচের এইচটিএমএলটি দেখতে পাবেনঃ


<?xml version="1.0" encoding="UTF-8"?>
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>

উপরের উদাহরণটি একটি DOMDocument-Object তৈরি করে এবং "note.xml" থেকে এক্সএমএল'টিকে এর মধ্যে লোড করে। তারপর saveXML() ফাংশনটি ভিতরের এক্সএমএল ডকুমেন্টটিকে একটি স্ট্রিং-এ রাখে, ফলে আমরা এটিকে আউটপুট হিসেবে পেতে পারি।

 

এক্সএমএল এর মধ্যে দিয়ে লুপিং

আমরা চাই এক্সএমএল পার্সারটিকে চালু করতে, এক্সএমএল'টিকে লোড করতে এবং এলিমেন্টের সবগুলো এলিমেন্টের মধ্যে লুপ তৈরি করতেঃ


<?php
$xmlDoc = new DOMDocument();
$xmlDoc->load("note.xml");

$x = $xmlDoc->documentElement;
foreach ($x->childNodes AS $item) {
  print $item->nodeName . " = " . $item->nodeValue . "<br>";
}
?>

 

উপরের কোডটির আউটপুট হবেঃ


#text =
to = Tove
#text =
from = Jani
#text =
heading = Reminder
#text =
body = Don't forget me this weekend!
#text =


 

উপরের উদাহরণটিতে আপনি দেখতে পাবেন যে প্রত্যেকটি এলিমেন্টের মধ্যে খালি (empty) টেক্সট নোড রয়েছে। যখন এক্সএমএল তৈরি হয় তখন নোডগুলোর মধ্যে প্রায়ই হোয়াইট-স্পেস থাকে। এক্সএমএল DOM পার্সার এগুলোকে সাধারণত এলিমেন্ট হিসেবে বিবেচনা করে এবং আপনি যদি এগুলোর সম্পর্কে জ্ঞাত না হন তাহলে মাঝে মাঝে এগুলো সমস্যার সৃষ্টি করে।