PHP SXml جلب معلومات XML من موقع معين







بسم الله الرحمن الرحيم السلام عليكم ورحمه الله وبركاته بما ان هذه المشاركة الاولى لي هنا احبيت ان اطرح معلومة حول SimpleXML Functions المتوفرة عبر الرابط : PHP: SimpleXML Functions - Manual يعتبر هذا الكائن او دوال SimpleXML دوال مهمة لتعرف على ملفات XML وتحضيرها كمصفوفة مسبقة تستطيع استخدامه سلمها بسهولة فسأوفر في هذا الشرح هذه التقنية السهلة المبسطة للانفتاح في مجال الكائنات الاخرى ومكتبات PHP Xml الاخرى عادتاً واهم دالة سنتكلم عنها هي simplexml_ load_ file تعتبر هذه الدالة او بالاحرى هي ليست دالة بل كائن لكن انشاءه لايحتاج الى new لانه عبارة عن وظيفة متدرجة من مكتبة مثبتة تدعم ميزات XML فلنتحدث عن هذه الدالة بشكل المبسط الذي سيؤهلنا لتعامل مستقبلاً مع المكتبة كاملة بشكل اوضح فيتوجب في هذا الدرس ان نوضح الية العمل بشكل البسيط لنوفر فهم حتى نتوسع لما هو اكبر الدالة اعلاه تعتمد على خمس تمريرات او مايسمى ARGs او Pars لكن مايهمنا منهم في هذا الدرس تمريرة واحدة فقط وهي الاولى وهي الملف المراد جلبه فمثلاً لو اردنا تحضير ملف XML لقرائته في PHP فيتوجب انشاء متغير يعتمد عليه في هذه الدالة كمثال سأستخدم موقع Alexa المشهور لجلب بعض المعلومات منه فالنبدء بالتحضير واعداد الدالة اولاً يتوجب جلب ملف XML كالتالي

رمز PHP:
<?php 

$xml 
simplexml_load_file("Traidnt.xml"); 

?>

 

وبما اني استخدم اليكسا في شرحي سيكون كالتالي لنطلب على سبيل المثال traidnt

رمز PHP:
<?php 

$xml 
simplexml_load_file('http://data.alexa.com/data?cli=10&url=http://www.traidnt.net'); 

?>

لاحظ معي انني استخدمت متغير واسميته xml وهو الذي سيعتمد الكائن xml فهذه الدالة حولتي بيانات ملف XML لمصفوفة استطيع الوصول لبياناته في PHP بسهولة مثلاً لنقرء المصفوفة اعلاه ونكتب بشكل الكامل

رمز PHP:
<?php 

$xml 
simplexml_load_file('http://data.alexa.com/data?cli=10&url=http://www.traidnt.net'); 

echo 
'<pre>'; 
print_r($xml); 
echo 
'</pre>'; 

?>

ل شاهدت ماجرى !! يبدوا وانه امر جميل اذاً استطعنا تحويل بيانات XML لمصفوفة يمكننا استخدامها في PHP الان مع الاستخدام كمثال لو اردت جلب شيء معين مثلاً سأجلب POPULARITY لاحظ معي في الرابط اين مكانها http://data.alexa.com/data?cli=10&url=http://www.traidnt.netهل لاحظت مكانها هي في ALEXA تفرع SD من ثم POPULARITY الان كيف اطلب POPULARITY ؟؟ يمكنك طلبها بتدرج المصفوفات المتداخلة فنحن نعلم ان الان الامر اعلاه اصبح لمصفوفة كما شاهدنا في PRINT_R الان نحول المصفوفة الى كائنية الطلب كمثال المتغير الرئيسي الذي قام بجلب ملف xml وهو المتغير xml الذي عرفناه في بداية الدرس كالتالي

رمز PHP:
$xml  

نبدء الان في الطلب التدريجي لصفوف لاتبدء في ALEXA لانه Root Elm لذلك ستبدء من SD فيكون الطلب

رمز PHP:
$xml->SD  

لاحظ معي ان حساسية الاحرف حساسة فلو كتبت Upr فيتوجب ان تكون Upr لذلك حتى هذه اللحظة لم نصل الى مانريده وهو POPULARITY فلذلك ندخل عليه بالتدريج الكائني

رمز PHP:
$xml->SD->POPULARITY 

لاحظ معي اننا مازلنا لم نصل لشيء لاننا لم نضع امر الطباعة لكن مايهمني الان هو الوصول للقيم فملف XML الخاص ALEXA يحتوي على وصوف نريد الوصول اليها فلذلك يتوجب ان نذهب للوصف عن طريق المصفوفة [] مثلاً لو اردت TEXT الموجود في POPULARITY فسأقول له

رمز PHP:
echo $xml->SD->POPULARITY['TEXT'];  

لاحظو ما توصلنا اليه الكود كامل

رمز PHP:
<?php 

$xml 
simplexml_load_file('http://data.alexa.com/data?cli=10&url=http://www.traidnt.net'); 

echo 
$xml->SD->POPULARITY['TEXT']; 

?>

هل شاهدت كيفية الوصول دعنا نفسر ماحدث اولاً : جهزنا الدالة لاستقبال ملف ثانياً : عرضناه على انه مصفوفة لنعرف بياناته ثالثاً : الروت لايوضع ضمن قائمة المصفوفة لانه رئيسي رابعاً : كل صف رئيسي يوضع بشكله الطبيعي كمثال SD او POPULARITY بينما الوصوف توضع كصف ['TEXT'] . اعتقد ان الامر بسيط لكنه يحتاج تطبيق

المصدر