المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : بكل بساطه SimpleXML فى التعامل مع XML (الجــ الأول ــزء)


مبرمج
05-28-2009, 08:57 AM
السادة اعضاء ترايدنت
تحية طيبه وبعد


استكمل معكم ما بدأه أخى المهاجر بشرح التعامل مع XML عن طريق استخدام SimpleXML
بالرابط التالى : http://traidnt.net/vb/showthread.php?t=820849

سيتلخص محور حديثنا على النقاط التاليه :


نظره حول تنسيق XML
كتابة مستند باستخدامXML
ما هى SimpleXML
الوصول الى العلامات والنقاط Elements
الوصول الى الصفات Attributes
استخدام استعلامات XPath
نظره حول تنسيق XML

بما أنك وصلت لأن يجذبك عنوان الخاص بالتعامل مع XML باستخدام SimpleXML فهذا يعنى أنك قطعت شوطا كبيرا فى دراسة لغة php مما يعنى أنك على استعداد الى تقبل معلومات جديده والتعامل مع تقنيات جديده ومن المؤكد انك تعرف بلغة HTML وتعرف اساسياتها . فتنسيق XML يشبة بدرجة كبيره تنسيق HTML مثل استعمال العلامات tags والصفات attributes .
واصبحت من اكثر اللغات استخداما فى اساليب نقل المعلومات ومشاركتها ولعل من اكثر التطبيقات استخداما هى تقنية RSS التى اصبحت من اكثرها شيوعا فى المنتديات وانظمة التدوين .

من اكثر الأمور اهمية فى مستند XML هى الثلاث نقط التاليه :

الكيانات : الكيان فى XML يعتبر وحده تخزينيه وتعامل كالمتغيرات ويمكن الاستدلال لها مره اخرى . قم بالرجوع بقراءة هذا الدرس من الرابط التالى (http://www.tizag.com/xmlTutorial/xmlentity.php)لمعرفة مفهومها وهى لن تهمنا بالضروره فى التعامل مع php
العناصر : العناصر هى الحاويات التى نقوم بتخزين البيانات بداخلها ومن الممكن ان تحتوى على عناصر داخليه بداخلها وتحتوى على واحده أو اكثر من الصفات .
اصدار XML والترميز : يجب تعريف اصدار XML ونوع الترميز الخاص بالوثيقة كى تكون صالحه للاستخدام . فاذا اخذنا مثال على ذلك : رمز PHP:



سنجد هنا ان اصدار XML هو الاصدار الاول وبالنسبة للترميز فهو ISO-8859-1 - يمكنك الاطلاع على قائمة الترميز من هذا الرابط (http://czyborra.com/charsets/iso8859.html) - الترميز المناسب للغة العربيه هو الترميز ISO-8859-1 .

اذا كنت تريد الاهتمام والتعمق فى XML يمكنك متابعة دورة صديقى على (allsyria) بركن تقنيات المواقع من هذا الرابط (http://www.traidnt.net/vb/showthread.php?t=1186233)
يمكنك الاطلاع على صفات اكثر عن طريق هذا المقال (http://www.w3c.org.ma/XML/XML-in-10-points.ar.html)

والان سنقوم بكتابة مستند XML صالح من حيث البناء .

كتابة مستند XML

قمت بكتابة مستند XML بسيط كى يكون الشرح مدعم بالأمثله لتوضيح الفكره
رمز PHP:



33674
almhajer
755


51149
the_traveller
2204


34027
allsyria
3036


46733
Mr.Ajax
1676




كما نرى فى ذلك المستند فان اول سطر يمثل اصدار الوثيقه رمز PHP:
<span style="color: #000000"><span style="color: #0000BB">


ويمكنك ايضا أن تقوم بقراءة ملف XML بدوال قراءة الملفات وتحويله الى متغير والتعامل معه على انه متغير كما يظهر من المثال التالى :
رمز PHP:



تحميل XML على انه ملف file
يمكنك أيضا بدلا من التعامل مع ملف XML على انه متغير أن تتعامل معه على انه ملف وتجعل SimpleXML ان تقرأه مباشره ويتم ذلك باستخدام الدالة simplexml_load_file ويتضح هذا من الكود التالى :
رمز PHP:



الى هنا قمنا بتحميل ملف XML عن طريق SimpleXML يمكننا الأن التعامل معه على انه كائن مثلما تتعامل مع الكائنات Classes

هناط طريقة أخرى لتحميل ملف XML كما يلى باستخدام OOP :
رمز PHP:



فيمكنك سرد محتويات الملف كما يلى:
رمز PHP:



اذا نظرنا للمخرجات سنجد انها عباره عن Object
رمز PHP:
LoadedSimpleXMLElement Object
(
[user] => Array
(
[0] => SimpleXMLElement Object
(
[id] => 33674
[name] => almhajer
[points] => 755
)

[1] => SimpleXMLElement Object
(
[id] => 51149
[name] => the_traveller
[points] => 2204
)

[2] => SimpleXMLElement Object
(
[id] => 34027
[name] => allsyria
[points] => 3036
)

[3] => SimpleXMLElement Object
(
[id] => 46733
[name] => Mr.Ajax
[points] => 1676
)

)



هذا يعنى ان عملية الوصول الى محتويات الملف أصبحت اكثر من سهله .

الوصول الى العلامات والنقاط

بعد أن قمنا بتحميل ملف XML وأصبح مهيئأ للتعامل معه على أنه كائن فأصبح لأن على قدره للوصول الى العلامات والنقاط الموجوده بملف XML ويتضح هذا من الكود التالى :
رمز PHP:
id.'
';
echo 'NAME : '.$user->name.'
';
echo 'POINTS : '.$user->points.'
';
}

?>


يظهر مخرجات الكود كما يلى :
رمز PHP:
ID : 33674
NAME : almhajer
POINTS : 755
ID : 51149
NAME : the_traveller
POINTS : 2204
ID : 34027
NAME : allsyria
POINTS : 3036
ID : 46733
NAME : Mr.Ajax
POINTS : 1676



وكما يظهر قمنا بالوصول الى العلامات والنقاط بكل سهوله .

قمنا هنا باستخدام الدواره for للوضول الى كافة أعضاء الكائن
لكن يمكنك الوصول الى عضو واحد فقط وذلك باضافة مفتاح العضو كما هو لحال تماما مع المصفوفات

رمز PHP:
user[2]->id;
?>


سنجد أن ناتج هذا الكود هو رمز PHP:
34027



الوصول الى الصفات Attributes

اذا كان المستند الخاص بنا يحتوى على بعض الخواص - ونريد الوصول اليها
نقوم بالتعديل على المستند traidnt.xml ونضيف ايه بعض الصفات ويكون كما يلى :
رمز PHP:



33674
almhajer
755


51149
the_traveller
2204


34027
allsyria
3036


46733
Mr.Ajax
1676




كما نلاحظ هنا اضفنا الخاصية pages الى العلامه points

للوصول الى الصفة pages يمكن كما يلى :
رمز PHP:
points['pages'].'
';
}
?>


نلاحظ ان ناتج الكود هو :
رمز PHP:
ID : 33674
NAME : almhajer
PAGES : 10
ID : 51149
NAME : the_traveller
PAGES : 33
ID : 34027
NAME : allsyria
PAGES : 21
ID : 46733
NAME : Mr.Ajax
PAGES : 9



ويمكننت الوصول الى احداهما كما يلى
رمز PHP:
user[2]->points['pages'];
?>


نلاحظ ان ناتج هذا الكود هو :
رمز PHP:
21



استخدام استعلامات XPath
XPath هى لغة موحده ل W3C تستخدم للوصول والبحث فى مستندات XML - فيكمن تعريفها على انه لغه استعلاميه للوصول الى النقط الداخليه بمستندات XML بطريقة ميسره .

ولاستخدام XPath فى SimpleXML أتت بدالة تسمى رمز PHP:
xpath()



عند اجراء الاستعلام باستخدام تلك الداله فانها ترجع كائنات SimpleXMLElement

ولنأخذ مثال على استخدام XPath :

رمز PHP:
xpath("user/id"));
print "";
?>


نلاحظ ان ناتج الكود هو كما يلى :
رمز PHP:
Array
(
[0] => SimpleXMLElement Object
(
[0] => 33674
)

[1] => SimpleXMLElement Object
(
[0] => 51149
)

[2] => SimpleXMLElement Object
(
[0] => 34027
)

[3] => SimpleXMLElement Object
(
[0] => 46733
)



الى هنا نكون قد انتهيت من الجزء الاول من شرح SimpleXML
اذا وجدت أى شئ يشوبة الغموض لا تتردد بالسؤال
وأرجو حفظ حقوقى عند نقل الموضوع لمكان آخر

الى اللقاء فى الجزء الثانى باذن الله

أدام الله أيامكم بالسعادة
مع تحياتى
Mr.Ajax:icon31:











</div></div>