آشنایی با تحلیلگرهای XML در PHP

php xml parsers guide
20 آبان 1403

وقتی صحبت از XML به میان می‌آید، PHP یکی از زبان‌های کارآمد برای تحلیل و پردازش فایل‌های XML است. XML یا Extensible Markup Language یک فرمت متنی است که برای ذخیره‌سازی و انتقال داده‌ها به صورت ساخت یافته استفاده می‌شود. از این رو، توسعه‌دهندگان PHP غالباً به تحلیلگرهای XML نیاز دارند تا بتوانند داده‌ها را به راحتی از فایل‌های XML بخوانند و یا دستکاری کنند.

ابتدا باید بدانید که در PHP، دو نوع اصلی از تحلیلگرهای XML وجود دارد: SimpleXML و XML Parser. هر دو ابزار برای تحلیل فایل‌های XML مورد استفاده قرار می‌گیرند، اما با روش‌های مختلف. SimpleXML به طور خاص برای خواندن و کار با ساختارهای ساده XML مناسب است و استفاده از آن بسیار ساده می‌باشد. از سوی دیگر، XML Parser که با نام SAX (Simple API for XML) نیز شناخته می‌شود، کنترل بیشتری بر روی تحلیل XML فراهم می‌کند، اما پیچیدگی بیشتری هم دارد.

به عنوان مثال با SimpleXML، می‌توانید به راحتی اطلاعات را از یک فایل XML بخوانید و در برنامه خود از آن‌ها استفاده کنید. این کتابخانه به شما اجازه می‌دهد تا با توابع ساده به داده‌ها دسترسی داشته باشید و یا آن‌ها را دستکاری کنید. این ویژگی‌ها باعث می‌شود که SimpleXML انتخاب مناسبی برای پروژه‌های کوچک و متوسط باشد.

در مقابل، XML Parser به شما امکان می‌دهد تا به صورت خط به خط و رویداد محور به XML دسترسی داشته باشید. این بدین معناست که شما می‌توانید در هنگام رخدادهای خاص مانند آغاز یا پایان یک المان، اقدام مشخصی انجام دهید. این رویکرد به شما کنترل دقیق‌تری بر داده‌های XML می‌دهد و برای پروژه‌های بزرگ و پیچیده مناسب‌تر است.

در ادامه نمونه کدهایی از هر دو روش ارائه می‌شود که به شما کمک می‌کنند تا اعتماد بیشتری به توانایی‌های PHP در تحلیل XML پیدا کنید.

کد نمونه برای SimpleXML


<?php
$xmlString = '<note><to>John</to><from>Jane</from><heading>Reminder</heading><body>Don't forget the meeting at 3PM.</body></note>';
$xml = simplexml_load_string($xmlString);
echo $xml->to; // خروجی: John
?>

کد نمونه برای XML Parser


<?php
function startElement($parser, $name, $attrs) {
echo "Start element: $name\n";
}
function endElement($parser, $name) {
echo "End element: $name\n";
}
$xml_parser = xml_parser_create();
xml_set_element_handler($xml_parser, "startElement", "endElement");
$xmlString = '<note><to>Tove</to><from>Jani</from><heading>Reminder</heading><body>Don't forget me this weekend!</body></note>';
xml_parse($xml_parser, $xmlString);
xml_parser_free($xml_parser);
?>

ابتدا در کد SimpleXML، یک رشته حاوی XML تعریف می‌کنیم و با استفاده از تابع simplexml_load_string آن را تحلیل می‌کنیم.
سپس، با استفاده از روش echo به یکی از المان‌های XML دسترسی پیدا می‌کنیم.

در مثال XML Parser، ابتدا توابع شروع و پایان برای المان‌ها را تعریف می‌کنیم.
سپس یک تحلیلگر XML می‌سازیم و آن را به گونه‌ای پیکربندی می‌کنیم که از توابع تعریف شده استفاده کند.
در نهایت، با استفاده از تابع xml_parse رشته XML را تحلیل و خروجی مناسب تولید می‌کنیم.
در پایان، تحلیلگر XML را آزاد می‌کنیم تا حافظه را حفظ کنیم.

سوالات متداول

؟

چطور می‌توانم یک فایل XML را با PHP تحلیل کنم؟

؟

تفاوت بین SimpleXML و XML Parser چیست؟

؟

آیا PHP برای کار با XML مناسب است؟