XML (زبان نشانه گذاری توسعه پذیره – Extensible Markup Language) یک زبان نشانه گذاری برای رمزگذاری فایل ها در زیان ماشین و زبان قابل خواندن توسط انسان استفاده می شود . XML یک نوع فرمت داده برای ذخیره و انتقال اطلاعات بین پلتفرم و اپلیکیشن های مختلف استفاده می شود . همچنین در ارتباط با وب سرویس ها و API نیز از آن استفاده می شود . فرمت محبوب دیگر داده jSON است .
از XML می توانید به روش های مختلف در اپلیکیشن های تحت وب استفاده کنید . اگر در مورد حجم دیتابیس نگران هستید و قصد دارید از دیتابیس کمتر استفاده کنید , XML به شما کمک می کند که حجم دیتابیس را کاهش بدید . به جای دیتابیس می توانید داده ها را در فایل XML ذخیره و بعدا آن را بدون اتصال به دیتابیس بخوانید
در این آموزش به شما نشان می دهیم که چطور آرایه (array) های انجمنی یا چندبعدی را به XML و یا برعکس تبدیل و آن را در یک فایل xml ذخیره کنید . همچنین , کد php مثال زیر به شما نحوه بررسی فایل xml و تبدیل داده XML به آرایه در php را نشان می دهد .
تبدیل آرایه چندبعدی php به XML
تابع createXML() :
برای استفاده کاربردی تر , همه کد های تبدیل آرایه به XML در php را به عنوان یک گروه در تابع php ذخیره میکنیم .تابع createXML()
برای تبدیل آرایه چندبعدی php به XML استفاده می شود . برای اینکار باید داده آرایه ای را به عنوان یک پارامتر ورودی به تابع createXML()
پاس بدید . این تابع یک سند XML را توسط کلاس DOMDocument
ایجاد و محتویات آرایه php را در سند XML قرار میدهد . در آخر , سند XML به عنوان یک فایل XML در مسیر دلخواه با متد save()
ذخیره می شود.
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 28 29 30 31 32 33 |
function createXML($data) { $title = $data['title']; $rowCount = count($data['users']); //create the xml document $xmlDoc = new DOMDocument(); $root = $xmlDoc->appendChild($xmlDoc->createElement("user_info")); $root->appendChild($xmlDoc->createElement("title",$title)); $root->appendChild($xmlDoc->createElement("totalRows",$rowCount)); $tabUsers = $root->appendChild($xmlDoc->createElement('rows')); foreach($data['users'] as $user){ if(!empty($user)){ $tabUser = $tabUsers->appendChild($xmlDoc->createElement('user')); foreach($user as $key=>$val){ $tabUser->appendChild($xmlDoc->createElement($key, $val)); } } } header("Content-Type: text/plain"); //make the output pretty $xmlDoc->formatOutput = true; //save xml file $file_name = str_replace(' ', '_',$title).'_'.time().'.xml'; $xmlDoc->save("files/" . $file_name); //return xml file name return $file_name; } |
برای کپی صحیح و کامل کدها ، دابل کلیک کرده تا وارد محیط سفید و کپی شوید در غیر اینصورت امکان دارد اجرای کدها با مشکل روبرو شود
آرایه چندبعدی PHP
آرایه چند بعدی زیر به عنوان یک فایل XML توسط PHP ذخیره می شود .
1 2 3 4 5 6 7 8 |
$data = array( 'title' => 'Users Information', 'users' => array( array('name' => 'John Doe', 'email' => 'john@doe.com'), array('name' => 'Merry Moe', 'email' => 'merry@moe.com'), array('name' => 'Hellary Riss', 'email' => 'hellary@riss.com') ) ); |
تبدیل آرایه php به فایل XML
برای اینکار نیاز است که تابع createXML() را فراخوانی و متغییر آرایه ای را برای تبدیل به XML پاس بدید.
1 |
echo createXML($data); |
کد مثال بالا برای تبدیل آرایه به XML در php یک فایل XML به صورت زیر را خواهد ساخت :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
<?xml version="1.0"?> <user_info> <title>Users Information</title> <totalRows>3</totalRows> <rows> <user> <name>John Doe</name> <email>john@doe.com</email> </user> <user> <name>Merry Moe</name> <email>merry@moe.com</email> </user> <user> <name>Hellary Riss</name> <email>hellary@riss.com</email> </user> </rows> </user_info> |
تبدیل XML به آرایه انجمنی PHP
حالا داده XML را از فایل خوانده و XML را به آرایه تبدیل می کنیم. که مراحل تبدیل XML به آرایه PHP بصورت زیر است :
- خواندن کل فایل با تابع file_get_contents() در php و ذخیره آن در یک متغییر
- تبدیل رشته XML به یک شی (Object) توسط تابع simplexml_load_string() در php
- تبدیل آبجکت به داده jSON توسط تابع json_encode()
- تبدیل داده json به یک آرایه انجمنی با تابع json_deode()
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
//xml file path $path = "files/path-to-document.xml"; //read entire file into string $xmlfile = file_get_contents($path); //convert xml string into an object $xml = simplexml_load_string($xmlfile); //convert into json $json = json_encode($xml); //convert into associative array $xmlArr = json_decode($json, true); // show coverted xml in array format print_r($xmlArr); |
کد php مثال بالا فایل 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 28 29 30 31 |
Array ( [title] => Users Information [totalRows] => 3 [rows] => Array ( [user] => Array ( [0] => Array ( [name] => John Doe [email] => john@doe.com ) [1] => Array ( [name] => Merry Moe [email] => merry@moe.com ) [2] => Array ( [name] => Hellary Riss [email] => hellary@riss.com ) ) ) ) |
برای دریافت فایل کامل کدهای تبدیل آرایه به XML در php از باکس دانلود استفاده کنید
هر گونه مشکلی در پیاده سازی کدها داشتید ، از قسمت نظرات اقدام کنید . سریعا ، پاسخگوی سوالات شما هستیم .
موفق و پیروز باشید.