جلسه بیست یکم PHP : آموزش کامل زبان برنامه نویسی پی اچ پی مقدماتی تا پیشرفته
در این مقاله از کدپز با جلسه بیستم یکم PHP که با موضوع نحوه استفاده XML در زبان برنامه نویسی PHP می باشد، در خدمت شما هستیم.
در قسمت قبل در جلسه بیستم PHP نحوه به روزرسانی اطلاعات در جدول MySQL و همچنین محدود کردن رکورد های انتخاب شده از دیتابیس MySQL را آموختیم.
در پایان این جلسه:
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 استفاده کنیم؟
1 – خدمات وبی مانند SOAP و REST برای تبادل اطلاعات از فرمت XML نیز بهره می برند. پس یادگیری هر چه بهتر XML و این که چگونه کار خواهند کرد، شما را در عرصهِ رقابتیِ توسعه دهندگان وب پیشتاز خواهد کرد.
2 – فایل های XML می توانند برای ذخیره تنظیمات پیکربندی یک برنامه مورد استفاده قرار گیرند.
نحوه کار با فایل XML با استفاده از PHP
SimpleXML یک افزونه است که این امکان را به شما می دهد تا به راحتی داده های XML را مدیریت و دریافت کنیم. در این جلسه بیست یکم PHP با آن آشنا خواهید شد.
SimpleXML یک راه مناسب برای دریافت نام، خواص ( attributes ) و همچنین محتوای متنی هر عنصر به شرط دانستن ساختار یا قالب آن فایل برای ما فراهم خواهد کرد.
SimpleXML یک سند XML را به یک ساختار داده تبدیل می کند به گونه ایی که شما می توانید با آن همانند آرایه ها و Object ها رفتار کنید.
شما در حال آموزش و یادگیری جلسه بیست یکم PHP هستید.
نحوه خواندن یک متن با SimpleXML
فرض کنید که متغییری با نام myXMLDate داریم که اطلاعات XML زیر را درون خود قرار داده است.
1 2 3 4 5 6 7 8 |
$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 از یک رشته به خوبی نشان می دهد.
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<?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 [heading] => Reminder [body] => Don’t forget me this weekend! )
هندلینگ ارور برای مثال بالا:
برای دربافت و ذخیره کردن تمامی خطا هایی که رخ می دهد، می توانید از توابع مربوط به شی libxml استفاده کنید. در مثال زیر یک رشته XML ناقص را بارگیری کند:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
<?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 را داریم، که همانند زیر است:
1 2 3 4 5 6 7 |
<?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() را بیان می کند.
1 2 3 4 |
<?php $xml=simplexml_load_file("note.xml") or die("Error: Cannot create object"); print_r($xml); ?> |
خروجی کد بالا از جلسه بیست یکم PHP:
SimpleXMLElement Object ( [to] => Tove [from] => Jani [heading] => Reminder [body] => Don’t forget me this weekend! )
حال قصد داریم تا نحوه دریافت و یا خواندن مقادیر گره ها یا همان node values را بررسی کنیم.
نحوه خواندن مقادیر Node ( گره )
با استفاده از مثال زیر می توانید مقادیر گره ها را از فایل note.xml استخراج کنید.
1 2 3 4 5 6 7 |
<?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 را داریم، که همانند زیر است:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
<?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> دریافت کنیم.
1 2 3 4 5 |
<?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> خوانده می شود.
1 2 3 4 5 6 7 8 9 |
<?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 > را خوانده ایم.
1 2 3 4 5 |
<?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 > را خوانده ایم.
1 2 3 4 5 6 7 |
<?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 استفاده نمایید.
📝<<جسارت اجرایی کردن ایده هایتان را داشته باشید، جهان همیشه پر از ترسوهای خوش فکر است. . . . . >> ☑️