পিএইচপি – এক্সএমএল 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 পার্সার এগুলোকে সাধারণত এলিমেন্ট হিসেবে বিবেচনা করে এবং আপনি যদি এগুলোর সম্পর্কে জ্ঞাত না হন তাহলে মাঝে মাঝে এগুলো সমস্যার সৃষ্টি করে।

 

Permanent link to this article: http://bangla.sitestree.com/%e0%a6%aa%e0%a6%bf%e0%a6%8f%e0%a6%87%e0%a6%9a%e0%a6%aa%e0%a6%bf-%e0%a6%8f%e0%a6%95%e0%a7%8d%e0%a6%b8%e0%a6%8f%e0%a6%ae%e0%a6%8f%e0%a6%b2-%e0%a6%a1%e0%a6%ae-%e0%a6%aa%e0%a6%be%e0%a6%b0%e0%a7%8d/