جلسه بیست یکم PHP : XML - DOM - SimpleXML

جلسه بیست یکم PHP : آموزش کامل زبان برنامه نویسی پی اچ پی مقدماتی تا پیشرفته

در این مقاله از کدپز با جلسه بیستم یکم PHP که با موضوع نحوه استفاده XML در زبان برنامه نویسی PHP می باشد، در خدمت شما هستیم.

در قسمت قبل در جلسه بیستم PHP نحوه به روزرسانی اطلاعات در جدول MySQL و همچنین محدود کردن رکورد های انتخاب شده از دیتابیس MySQL را آموختیم.

یازدهمین جلسه از PHP پیشرفته

در پایان این جلسه:

XML چیست ؟ را پاسخ خواهیم داد.
با مفهوم DOM در XML آشنا خواهید شد.
مفسر زبان XML را زیر ذره بین کدپز خواهیم برد.
و این که چرا باید از XML استفاده کنیم؟
مثال هایی از XML را بررسی خواهیم کرد.
نحوه خواندن یک فایل XML با استفاده از PHP را خواهیم داشت.
و البته چگونگی ساخت یک فایل XML با استفاده از PHP را داریم.

با ما همراه باشید با جلسه بیست یکم PHP

XML چیست ؟

XML مخفف عبارت Extensible
Markup Language می باشد.

از XML به منظور
ساختن اطلاعات، ذخیره و در نهایت انتقال اطلاعات از سیستمی به سیستم دیگر استفاده
می شود.

XML زبانی است نزدیک به زبان HTML که در آن از تگ های باز و بسته استفاده می کنیم. اما برخلاف زبان برنامه نویسی HTML ، ما در این زبان می توانیم به خودی خود تگ هایی را تعریف کنیم. به گونه ایی که تا کنون وجود نداشتند.

نصب XML

از آنجایی که توابع XML بخشی از هسته خود PHP می باشند، نیازی به نصب XML نخواهید داشت.

DOM چیست ؟

در ابتدا برای اطلاعات نیاز است که بدانیم که DOM
مخفف عبارت Document Object Model نیز است. DOM
یک پلت فرم متقابل و استاندارد به شمار می رود که از آن به عنوان یک واسط برنامه
نویسی برای اسناد HTML و XML
یاد می شود. که می تواند نحوه دسترسی به داده ها و دستکاری آنها را کنترل کند.
به وسیله DOM می توان Document
ها را ساخت و هچنین آنها را مدیریت کرد.
ساختار این Document ها چیزی شبیه
به یک درخت می باشد.

  • برای آموزشات بیشتر در رابطه با DOM می توانید از سایت tutorialspoint استفاده کنید.

مفسر XML Parser) XML)

مفسر XML یک برنامه ایی است که اسناد XML را به شیء DOM ترجمه میکند. سپس این فایل XML DOM با استفاده از زبان هایی نظیر جاوا اسکریپت ، پایتون ، پی اچ پی و غیره ویرایش و دستکاری خواهد شد. در این جلسه بیست یکم PHP کاملا با آن آشنا خواهیم شد.

چرا باید از XML استفاده کنیم؟

۱ – خدمات وبی مانند SOAP و REST برای تبادل اطلاعات از فرمت XML نیز بهره می برند. پس یادگیری هر چه بهتر XML و این که چگونه کار خواهند کرد، شما را در عرصهِ رقابتیِ توسعه دهندگان وب پیشتاز خواهد کرد.
۲ – فایل های XML می توانند برای ذخیره تنظیمات پیکربندی یک برنامه مورد استفاده قرار گیرند.

نحوه کار با فایل XML با استفاده از PHP

SimpleXML یک افزونه
است که این امکان را به شما می دهد تا به راحتی داده های XML
را مدیریت و دریافت کنیم. در این جلسه بیست یکم PHP
با آن آشنا خواهید شد.

SimpleXML یک راه مناسب
برای دریافت نام، خواص ( attributes
) و همچنین محتوای متنی هر عنصر به شرط دانستن ساختار یا قالب آن فایل برای ما
فراهم خواهد کرد.

SimpleXML یک سند XML را به یک ساختار داده تبدیل می کند به گونه ایی که شما می توانید با آن همانند آرایه ها و Object ها رفتار کنید.

شما در
حال آموزش و یادگیری جلسه بیست یکم
PHP هستید.

نحوه خواندن یک متن با SimpleXML

فرض کنید که متغییری با نام myXMLDate
داریم که اطلاعات XML زیر را درون خود قرار داده است.

$myXMLData =
"<?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>";

از تابع simplexml_load_string() در PHP برای خواندن اطلاعات متنی در یک فایل XML استفاده می شود.

مثال زیر نحوه استفاده از این تابع را در XML
برای خواندن داده های XML از یک رشته
به خوبی نشان می دهد.

<?php
$myXMLData =
    "<?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>";

$xml=simplexml_load_string($myXMLData) or die("Error: Cannot create object");
print_r($xml);
?>

خروجی کد بالا از جلسه بیست یکم PHP:

SimpleXMLElement Object ( [to] => Tove [from] => Jani 
=> Reminder [body] => Don’t forget me this weekend! )

 

هندلینگ ارور برای مثال بالا:

برای دربافت و ذخیره کردن تمامی خطا هایی که رخ می
دهد، می توانید از توابع مربوط به شی libxml استفاده
کنید. در مثال زیر یک رشته XML ناقص را
بارگیری کند:

<?php
libxml_use_internal_errors(true);
$myXMLData =
    "<?xml version='1.0' encoding='UTF-8'?> 
<document> 
<user>John Doe</wronguser> 
<email>john@example.com</wrongemail> 
</document>";

$xml = simplexml_load_string($myXMLData);
if ($xml === false) {
    echo "Failed loading XML: ";
    foreach(libxml_get_errors() as $error) {
        echo "<br>", $error->message;
    }
} else {
    print_r($xml);
}
?>

خروجی کد بالا از جلسه بیست یکم PHP:

Failed loading
XML: 
Opening and ending tag mismatch: user line 3 and
wronguser
Opening and ending tag mismatch: email line 4
and wrongemail

 

خواندن مواردی از فایل XML در PHP

از تابع simplexml_load_file() برای خواندن اطلاعات از
یک فایل XML
استفاده میکنیم.

فرض کنید یک فایل XML با نام note.xml را داریم، که همانند زیر است:

<?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>

حال به مثال زیر توجه فرمایید  که نحوه استفاده از تابع simplexml_load_file() را بیان می کند.

<?php
$xml=simplexml_load_file("note.xml") or die("Error: Cannot create object");
print_r($xml);
?>

خروجی کد بالا از جلسه بیست یکم PHP:

SimpleXMLElement
Object ( [to] => Tove [from] => Jani
=> Reminder [body]
=> Don’t forget me this weekend! )

 

حال قصد داریم تا نحوه دریافت و یا
خواندن مقادیر گره ها یا همان node values را بررسی کنیم.

نحوه خواندن مقادیر Node ( گره )  

با استفاده از مثال زیر می توانید
مقادیر گره ها را از فایل note.xml استخراج کنید.

<?php
$xml=simplexml_load_file("note.xml") or die("Error: Cannot create object");
echo $xml->to . "<br>";
echo $xml->from . "<br>";
echo $xml->heading . "<br>";
echo $xml->body;
?>

خروجی کد بالا از جلسه بیست یکم PHP:

Tove
Jani
Reminder
Don’t forget me this weekend!

نحوه دریافت مقادیر عناصر خاص

فرض کنید یک فایل XML دیگری با نام books.xml را داریم، که همانند زیر
است:

<?xml version="1.0" encoding="utf-8"?>
<bookstore>
  <book category="COOKING">
    <title lang="en">Everyday Italian</title>
    <author>Giada De Laurentiis</author>
    <year>2005</year>
    <price>30.00</price>
  </book>
  <book category="CHILDREN">
    <title lang="en">Harry Potter</title>
    <author>J K. Rowling</author>
    <year>2005</year>
    <price>29.99</price>
  </book>
  <book category="WEB">
    <title lang="en-us">XQuery Kick Start</title>
    <author>James McGovern</author>
    <year>2003</year>
    <price>49.99</price>
  </book>
  <book category="WEB">
    <title lang="en-us">Learning XML</title>
    <author>Erik T. Ray</author>
    <year>2003</year>
    <price>39.95</price>
  </book>
</bookstore>

با استفاده از مثال زیر توانستیم مقادیر
گره عنصر < title> را در اولین و دومین
تگ <book>
دریافت کنیم.

<?php
$xml=simplexml_load_file("books.xml") or die("Error: Cannot create object");
echo $xml->book[0]->title . "<br>";
echo $xml->book[1]->title;
?>

خروجی کد بالا از جلسه بیست یکم PHP:

Everyday Italian
Harry Potter

خواندن مقادیر گره node با استفاده از حلقه loop

در مثال زیر با حلقه loop تمامی مقادیر گره های <title>  ،<year>  و <price> را از طریق تگ <book>
خوانده می شود.

<?php
$xml=simplexml_load_file("books.xml") or die("Error: Cannot create object");
foreach($xml->children() as $books) {
    echo $books->title . ", ";
    echo $books->author . ", ";
    echo $books->year . ", ";
    echo $books->price . "<br>";
}
?>

 خروجی کد بالا از جلسه بیست یکم PHP:

Everyday Italian,
Giada De Laurentiis, 2005, 30.00
Harry Potter, J K. Rowling, 2005, 29.99
XQuery Kick Start, James McGovern, 2003, 49.99
Learning XML, Erik T. Ray, 2003, 39.95

آموزش خواندن مقدار ویژگی ( Attribute ) ها

در مثال زیر مقدار ویژگی ” category ” از عنصر اول <
book > و ویژگی ” lang ” از عنصر دوم <
title >  را خوانده ایم.

<?php
$xml=simplexml_load_file("books.xml") or die("Error: Cannot create object");
echo $xml->book[0]['category'] . "<br>";
echo $xml->book[1]->title['lang'];
?>

خروجی کد بالا از جلسه بیست یکم PHP:

COOKING
en

آموزش خواندن مقدار ویژگی ( Attribute ) ها با استفاده از حلقه loop

در مثال زیر مقدار ویژگی ( attribute ) از عنصر < title > را خوانده ایم.

<?php
$xml=simplexml_load_file("books.xml") or die("Error: Cannot create object");
foreach($xml->children() as $books) {
    echo $books->title['lang'];
    echo "<br>";
}
?>

خروجی کد بالا :

en
en
en-us
en-us

تبریک میگم شما موفق شدید تا جلسه بیست یکم PHP از کدپز را پشت سر بگذارید. 

امیدوارم کار با XML را به خوبی یاد گرفته باشید. اگر سوال و یا مطلبی هم بود، میتونید از طریق کامنت ها با بنده به اشتراک بگذارید. همچنین برای آموزشات بیشتر نیز می توانید از سایت w3schools استفاده نمایید.

📝<<جسارت
اجرایی کردن ایده هایتان را داشته باشید، جهان همیشه پر از ترسوهای خوش فکر
است.  . . . . >> ☑️




مقاله قبلی: جلسه نوزدهم PHP:

مقاله بعدی: جلسه بیست دوم PHP :
سایر مقالات :

جلسه معرفیرفتن به مطلب
جلسه اول Phpرفتن به مطلب
جلسه دوم Phpرفتن به مطلب
جلسه سوم Phpرفتن به مطلب
جلسه چهارم PHPرفتن به مطلب
جلسه پنجم PHPرفتن به مطلب
جلسه ششم PHPرفتن به مطلب
جلسه هفتم PHPرفتن به مطلب
جلسه هشتم PHPرفتن به مطلب
جلسه نهم PHPرفتن به مطلب
جلسه دهم PHP - یادآوری فرم در html - فرم ها در PHP‌ - آشنایی با متد های GET_$ و POST_$رفتن به مطلب
جلسه یازدهم PHP: شی گرایی - تعریف کلاس - ساخت اشیا فراخوانی تابع عضورفتن به مطلب
جلسه پانزدهم PHP: اتصال PHP به MySQL - (PDO یا MySQL) - بستن اتصالرفتن به مطلب
جلسه هفدهم PHP : وارد کردن اطلاعات در MySQL با دو روش mysqli و PDO - به صورت رویه ای و شی گراییرفتن به مطلب
جلسه هجدهم PHP- دریافت آخرین شناسه در پایگاه داده MySQL - دستورات آماده PHP در MySQL رفتن به مطلب
جلسه نوزدهم PHP: رفتن به مطلب
جلسه بیست یکم PHP : XML - DOM - SimpleXMLرفتن به مطلب
جلسه بیست دوم PHP : رفتن به مطلب
جلسه بیست سوم PHP : پایگاه داده و Ajaxرفتن به مطلب
جلسه بیست چهارم PHP : تمارین PHP رفتن به مطلب
جلسه بیست پنجم PHP رفتن به مطلب