تعداد بازدید: 2151

کار با XML در PHP

XML مخفف (eXtensible Markup Language – زبان نشانه گذاری توسعه پذیر) طراحی شده برای ذخیره و انتقال اطلاعات می باشد. XML در ساخت فایل های پیکره بندی (phpunit.xml) و بسیاری از تکنولوژی های وب نظیر RSS , Atom , … استفاده دارد.

  • HTML برای نمایش اطلاعات می باشد. تنها برای ماشین ها قابل خواندن است. tag ها در HTML از پیش تعریف شده اند.
  • XML برای انتقال اطلاعات می باشد. برای ماشین ها و انسان قابل خواندن است. tag ها در XML از پیش تعیین شده نیستند و ما تعریف می کنیم(self-descriptive).

XML Syntax

XML بسیار شبیه به HTML است فقط یک سری قوانین خاص دارد.

<?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>
  <flag value="important"/>
</note>
  • مستقل از سخت افزار و نرم افزار می باشد برای توصیف و انتقال اطلاعات و قابل استفاده در بسیاری از زبان های برنامه نویسی مثلا PHP , JAVA , C.
  • خط اول اطلاعاتی در رابطه با سند xml ارائه می کند(XML Prolog).
  • xml دارای دو ورژن 1 و 1.1 می باشد. که ورژن 1 معمول تر است.
  • در xml تگ ها را شما تعیین می کنید. ساختار Nested در آن صدق می کند. یک تگ ریشه دارید (تگ ریشه اجباری است) و سایر تگ ها در آن قرار می گیرد.
  • اگر encoding را مناسب انتخاب کرده باشید می توانید اطلاعات فارسی هم داشته باشید. تگ ها به حروف کوچک و بزرگ حساس می باشند(Case Sensitive).
  • تگ های xml می توانند attribute بگیرند.
  • تگ ها یا تک بخشی هستند یا دو بخشی که تگ های تک بخشی باید با /> تمام شوند.
  • عناصر تهی باید تک بخشی ایجاد گردند (Empty XML Elements) یعنی <el></el> اشتباه است و باید به صورت <el/> تعیین گردد.
  • چهار کاراکتر < > & ' " در مقدار تگ ها غیر مجاز و باید از معادل Entity References آنها استفاده شود.
  • کامنت ها در xml مثل html می باشد مثلا <!-- This is a comment --> .
  • فصای خالی (White-space) در xml بر خلاف html به تعداد محاسبه می گردد.
  • شروع نام عناصر (XML Elements) یا همان تگ ها باید با حروف بزرگ و کوچک و یا _ می باشد.

XML Namespace

در اسناد XML نام عناصر توسط developer تعیین می شود . برای جلوگیری از conflict می توان از name space استفاده کرد.

<h:table>
  <h:tr>
    <h:td>Apples</h:td>
    <h:td>Bananas</h:td>
  </h:tr>
</h:table>

<f:table>
  <f:name>African Coffee Table</f:name>
  <f:width>80</f:width>
  <f:length>120</f:length>
</f:table>

نمایش اطلاعات xml در مرورگر های مختلف متفاوت می باشند. مرورگر های مدرن همه دارای یک شئ پیش فرض جاوا اسکریپتی با نام XMLHttpRequest می باشند که بوسیله آن به سرور درخواست ارسال می کنند.

کاربرد های XML

برخی سرویس ها مانند RSS , Atom همان XML هستند به علاوه یک سری قوانین بیشتر .همچنین ما می توانیم اطلاعات پایگاه داده را در آن ذخیره کنیم.

<database name="rng_plugin">
	<table name="wp_jobforms">
		<column name="id">1</column>
		<column name="title">برنامه نویس لاراول</column>
	</table>
	<table name="wp_jobforms">
		<column name="id">2</column>
		<column name="title">فرم استخدام node.js</column>
	</table>
	<table name="wp_jobforms">
		<column name="id">3</column>
		<column name="title">فرم استخدام کارمند اداری</column>
	</table>
</database>

فایل بالا را می توان در یک جدول پایگاه داده msql درون ریزی کرد.

PHP Dom Extension

زبان php یک DOM Parser به نام Dom می باشد که بوسیله آن می توان اسناد xml را پردازش کرد. همان طور که می دانید DOM (Document Object Model) یک استاندارد دسترسی به Element ها می باشد که در HTML و XML کاربرد دارد.

این افزونه پر کاربرد قابلیت تغییر و ذخیره (در همان فایل یا فایل مجزا) اسناد HTML و XML را دارد و به وسیله آن می توان درخواست های GET ساده نیز فرستاد. کافی است سند را لود کنید.

متد های کار با این افزونه به سه دسته زیر تقسیم بندی می شوند :

  • متد های load و loadHTML و loadXML برای بارگزاری اسناد XML , HTML
  • متد save برای ذخیره سند و متدهای saveXML و saveXML نمایش عنصر با فرمت های XML یا HTML .
  • متد هایی برای دستیابی و تغییر اسناد .

به طور مثال یک سند XML داریم و می خواهیم تغییراتی را در آن اعمال و ذخیره کنیم:

$xml = new DomDocument();
$xml->load("note.xml");
//CHANGES
echo $xml->save("note_2.xml");

متد های این افزونه بسیار شبیه به توابع Javascript می باشد به این دلیل که هر دو با DOM کار می کنند.

DOMDocument::getElementsByTagName : زمانی که از این تابع استفاده می کنید به شما یک شئ از DOMNodeList می دهد که تمامی node هایی که از این تگ استفاده کرده اند در آن می باشد.

DOMElement::getAttribute : برای گرفتن یک attribute از یک DOMElement .

DOMDocument::createElement : برای ساخت یک DOMNode .

DOMDocument::createAttribute: برای ساخت یک attribute . در نهایت می توان آن را به یک DOMNode اضافه کرد.

DOMNode::appendChild : برای اضافه کردن عنصر یا attribute به یک DOMNode دیگر.

هر یک از این متد ها بر روی اشیا مربوطه اجرا می گردد :

  • DOMDocument : شئ که از روی کلاس DomDocument ساخته شده باشد (اولین شئ).
  • DOMNodeList : شئ که از getElementBy* بدست آمده باشد.
  • DOMNode : آیتم n ام یک DOMNodeList که در بالا گفتیم.
  • DOMElement : یک عنصر خاص که پس از گشتن در DOMNodeList بدست آمده باشد. این کلاس از DOMNode گرفته شده است.

در مثال زیر می توانید هر یک از این موارد را مشاهده کنید در این مثال یک فایل xml اطلاعات تماس وجود دارد :

$xml = new DomDocument();
//$xml = object(DOMDocument)[1]
$xml->load("contacts.xml");
$rows = $xml->getElementsByTagName("row");
//$rows = object(DOMNodeList)[2]
foreach($rows as $row){
        //$row = object(DOMElement)
	echo $row->nodeValue;
}

در افزونه DomDocument می توان یک فایل را خواند یا یک رشته Dom که در یک متغیر ذخیره شده و هم به صورت یک درخواست به یک سروری که خروجی XML یا HTML می دهد.

$xml = new DomDocument();
$xml->load("http://data.alexa.com/data?cli=10&url=https://gnutec.net");
$node = $xml->getElementsByTagName("POPULARITY");
if($node->length !== 0){
	$global = $node->item(0)->getAttribute("TEXT");
	echo "Global Rank is: {$global}<br>";
}	
$node = $xml->getElementsByTagName("COUNTRY");
if($node->length !== 0){
	$country = $node->item(0)->getAttribute("NAME");
	$country_rank = $node->item(0)->getAttribute("RANK");
	echo "Rank in {$country} is: {$country_rank}<br>";
}

 

مطالب مشابه

namespace rational in php

منطق Namespace در PHP

دوتابع با نام یکسان Fatal Error است. برای جلوگیری از این خطا می توانید یک prefix ابتدای نام تابع بنویسید تا احتمال...

هدر های Http در درخواست و پاسخ

Http Headers (قسمت اول)

هر گاه اطلاعاتی را از سرور نیاز داشته باشیم باید یک درخواست به آن بزنیم و پاسخ را از سمت سرور دریافت کنیم. بر این...

email handling in php

ارسال و دریافت ایمیل در php

قوانین حکم فرما بر دنیای وب را پروتکل می نامیم. پروتکل http که در سرور ها برای ایجاد پاسخ به درخواست ها در برخی...

اشتراک گذاری :

مدیر وب سایت گنوتک . برنامه نویسی رو با زبان C در هفده سالگی شروع کردم . در حال حاضر به برنامه نویسی php برپایه معماری MVC , HMVC و همچنین سیستم مدیریت محتوای WordPress و فریم ورک محبوب لاراول علاقه مند هستم و دوست دارم اطلاعاتم رو با شما به اشتراک بگذارم.

۰ دیدگاه برای کار با XML در PHP

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *