PHP – پارسرهای XML

XML زبانی است برای ساختاردهی داده‌ها به منظور به اشتراک‌گذاری در وب‌سایت‌ها. فناوری‌های وب مانند فیدهای RSS و پادکست‌ها از XML استفاده می‌کنند. XML به راحتی قابل ایجاد است و شبیه HTML به نظر می‌رسد، به جز اینکه شما برچسب‌های خود را ایجاد می‌کنید.

برای کار با اسناد XML (خواندن، به‌روزرسانی، ایجاد و دستکاری) نیاز به یک پارسر XML دارید.

در PHP دو نوع اصلی از پارسرهای XML وجود دارد:

  1. پارسرهای مبتنی بر درخت (Tree-Based Parsers)
  2. پارسرهای مبتنی بر رویداد (Event-Based Parsers)

پارسرهای مبتنی بر درخت (Tree-Based Parsers)

این نوع پارسرها کل سند را در حافظه نگه می‌دارند و سند XML را به یک ساختار درختی تبدیل می‌کنند. آن‌ها کل سند را تحلیل کرده و دسترسی به عناصر درخت را فراهم می‌کنند (مانند DOM).

این نوع پارسر برای اسناد XML کوچکتر گزینه بهتری است، اما برای اسناد بزرگ XML مناسب نیست زیرا مشکلات عملکردی عمده‌ای ایجاد می‌کند.

مثال‌هایی از پارسرهای مبتنی بر درخت:

  • SimpleXML
  • DOM

مثال: استفاده از SimpleXML

<?php
$xmlString = <<<XML
<note>
  <to>Tove</to>
  <from>Jani</from>
  <heading>Reminder</heading>
  <body>Don't forget me this weekend!</body>
</note>
XML;

$xml = simplexml_load_string($xmlString);

echo $xml->to . "<br>";
echo $xml->from . "<br>";
echo $xml->heading . "<br>";
echo $xml->body;
?>

مثال: استفاده از DOM

<?php
$xmlString = <<<XML
<note>
  <to>Tove</to>
  <from>Jani</from>
  <heading>Reminder</heading>
  <body>Don't forget me this weekend!</body>
</note>
XML;

$dom = new DOMDocument();
$dom->loadXML($xmlString);

$to = $dom->getElementsByTagName('to')->item(0)->nodeValue;
$from = $dom->getElementsByTagName('from')->item(0)->nodeValue;
$heading = $dom->getElementsByTagName('heading')->item(0)->nodeValue;
$body = $dom->getElementsByTagName('body')->item(0)->nodeValue;

echo $to . "<br>";
echo $from . "<br>";
echo $heading . "<br>";
echo $body;
?>

پارسرهای مبتنی بر رویداد (Event-Based Parsers)

این نوع پارسرها کل سند را در حافظه نگه نمی‌دارند. بلکه یک گره در هر زمان می‌خوانند و به شما امکان تعامل در زمان واقعی را می‌دهند. پس از حرکت به گره بعدی، گره قبلی دور ریخته می‌شود.

این نوع پارسر برای اسناد بزرگ XML مناسب است. سریع‌تر تجزیه می‌کند و حافظه کمتری مصرف می‌کند.

مثال‌هایی از پارسرهای مبتنی بر رویداد:

  • XMLReader
  • XML Expat Parser

مثال: استفاده از XMLReader

<?php
$xmlString = <<<XML
<note>
  <to>Tove</to>
  <from>Jani</from>
  <heading>Reminder</heading>
  <body>Don't forget me this weekend!</body>
</note>
XML;

$reader = new XMLReader();
$reader->xml($xmlString);

while ($reader->read()) {
    if ($reader->nodeType == XMLReader::ELEMENT) {
        switch ($reader->localName) {
            case "to":
                $reader->read();
                echo $reader->value . "<br>";
                break;
            case "from":
                $reader->read();
                echo $reader->value . "<br>";
                break;
            case "heading":
                $reader->read();
                echo $reader->value . "<br>";
                break;
            case "body":
                $reader->read();
                echo $reader->value;
                break;
        }
    }
}
$reader->close();
?>

نتیجه‌گیری

  • پارسرهای مبتنی بر درخت (Tree-Based Parsers): مناسب برای اسناد XML کوچک و تحلیل کامل سند. مثال‌ها شامل SimpleXML و DOM هستند.
  • پارسرهای مبتنی بر رویداد (Event-Based Parsers): مناسب برای اسناد XML بزرگ و تحلیل سریع و کم حافظه. مثال‌ها شامل XMLReader و XML Expat Parser هستند.

هر دو نوع پارسر کاربردهای خاص خود را دارند و انتخاب بین آن‌ها بستگی به نیازهای پروژه و اندازه سند XML دارد.

پست های مرتبط

مطالعه این پست ها رو از دست ندین!
JavaScript - تاریخ‌ها (Dates)

JavaScript – تاریخ‌ها (Dates)

آبجکت‌های تاریخ (Date) در جاوااسکریپت آبجکت‌های تاریخ در جاوااسکریپت به ما امکان کار با تاریخ و زمان را می‌دهند....

بیشتر بخوانید
JavaScript - آرایه‌های ثابت (Array Const)

JavaScript – آرایه‌های ثابت (Array Const)

جاوااسکریپت: تعریف آرایه با const در سال 2015، جاوااسکریپت کلمه کلیدی مهمی به نام const را معرفی کرد. این...

بیشتر بخوانید
JavaScript - تکرار آرایه‌ها (Array Iteration)

JavaScript – تکرار آرایه‌ها (Array Iteration)

جاوا اسکریپت: تکرار بر روی آرایه‌ها جاوا اسکریپت روش‌های مختلفی برای تکرار (Iteration) بر روی آرایه‌ها ارائه می‌دهد که...

بیشتر بخوانید

نظرات

سوالات و نظراتتون رو با ما به اشتراک بذارید

برای ارسال نظر لطفا ابتدا وارد حساب کاربری خود شوید.