يتيح محلل DOM المدمج إمكانية معالجة مستندات XML في PHP.
يوفر W3C DOM مجموعة قياسية من الكائنات لمستندات HTML وXML، بالإضافة إلى واجهة قياسية للوصول إلى هذه المستندات ومعالجتها. ينقسم W3C DOM إلى أجزاء مختلفة (Core وXML وHTML) ومستويات مختلفة (DOM Level 1/2/3): * Core DOM - يحدد مجموعة قياسية من الكائنات لأي مستند منظم * XML DOM - لمستندات XML مجموعة قياسية من الكائنات* HTML DOM - تحديد مجموعة قياسية من الكائنات لمستندات HTML لمعرفة المزيد حول XML DOM، قم بزيارة البرنامج التعليمي XML DOM الخاص بنا.
لقراءة وتحديث - إنشاء ومعالجة - مستند XML، تحتاج إلى محلل XML.
هناك نوعان أساسيان من موزعي XML:
المحلل اللغوي القائم على الشجرة: يقوم هذا المحلل بتحويل مستندات XML إلى بنية شجرة. فهو يحلل المستند بأكمله ويوفر الوصول إلى العناصر الموجودة في الشجرة، مثل نموذج كائن المستند (DOM).
المحلل اللغوي المستند إلى الحدث: يتعامل مع مستند XML كسلسلة من الأحداث. عند وقوع حدث معين، يستدعي المحلل اللغوي دالة للتعامل معه.
محلل DOM هو محلل قائم على الشجرة.
الرجاء إلقاء نظرة على جزء مستند XML التالي:
<?xml version="1.0" encoding="ISO-8859-1"?><from>جاني</from>
يتعامل XML DOM مع XML أعلاه كبنية شجرة:
المستوى 1: وثيقة XML
المستوى 2: العنصر الجذري: <من>
المستوى 3: عنصر النص: "جاني"
تعد وظيفة المحلل اللغوي DOM XML جزءًا لا يتجزأ من PHP الأساسية. لا يلزم التثبيت لاستخدام هذه الوظائف.
سيتم استخدام ملف XML التالي في مثالنا:
<?xml version="1.0" encoding="ISO-8859-1"?><note><to>توفي</to><من>جاني</from><heading>تذكير</heading><body>دون 'لا تنساني في نهاية هذا الأسبوع!</body></note>
نحتاج إلى تهيئة محلل XML، وتحميل XML، وإخراجه:
<?php$xmlDoc = new DOMDocument();$xmlDoc->load("note.xml");print $xmlDoc->saveXML();?>
سيتم إخراج الكود أعلاه:
ToveJaniReminder لا تنساني في نهاية هذا الأسبوع!
إذا قمت بعرض التعليمات البرمجية المصدر في نافذة المتصفح، فسترى HTML التالي:
<?xml version="1.0" encoding="ISO-8859-1"?><note><to>توفي</to><من>جاني</from><heading>تذكير</heading><body>دون 'لا تنساني في نهاية هذا الأسبوع!</body></note>
يقوم المثال أعلاه بإنشاء كائن DOMDocument ويقوم بتحميل XML في "note.xml" إلى كائن المستند هذا.
تقوم الدالة saveXML() بوضع مستند XML الداخلي في سلسلة حتى نتمكن من إخراجه.
نريد تهيئة محلل XML، وتحميل XML، والتكرار عبر كافة عناصر عنصر <note>:
<?php$xmlDoc = new DOMDocument();$xmlDoc->load("note.xml");$x = $xmlDoc->documentElement;foreach ($x->childNodes AS $item) { print $item-> nodeName " = " $item->nodeValue "<br>" }?>
سيتم إخراج الكود أعلاه:
#text = to = Tove#text = from = Jani#text = عنوان = تذكير#text = body = لا تنساني في نهاية هذا الأسبوع!#text =
في المثال أعلاه، ترى أن هناك عقد نصية فارغة بين كل عنصر.
عندما يتم إنشاء XML، فإنه عادةً ما يحتوي على مسافة بيضاء بين العقد. ويعاملها محلل XML DOM كعناصر عادية، مما قد يسبب مشاكل في بعض الأحيان إذا لم تنتبه إليها.
لمعرفة المزيد حول XML DOM، قم بزيارة البرنامج التعليمي XML DOM الخاص بنا.