تحليل XML DOM

تضم معظم المتصفحات مستشهد XML مدمج لقراءة وتعامل XML.

يحول المستشهد XML إلى عنصر يمكن الوصول إليه باستخدام بايثون.

مثال

تقدم CodeW3C.com أمثلة مستقلة عن المتصفحات والمنصات. يمكن تشغيل هذه الأمثلة في جميع المتصفحات الحديثة.

تحميل وتحليل ملف XML
تحميل وتحليل نص XML

تحليل XML

تضم جميع المتصفحات الحديثة مستشهد XML مدمج لقراءة وتعامل XML.

يقرأ المستشهد XML ويضعه في ذاكرة النظام، ثم يتحول إلى عنصر DOM XML يمكن الوصول إليه باستخدام بايثون.

يختلف مستشهد XML من مايكروسوفت عن مستشفديات المتصفحات الأخرى. يدعم مستشهد مايكروسوفت تحميل ملفات XML ونصوص XML (نص)، بينما يستخدم المتصفحات الأخرى مستشفدات منفصلة. ومع ذلك، تحتوي جميع المستشفدات على وظائف لاستكشاف شجرة XML، والوصول، وإدراج وإزالة العناصر.

في هذا الدليل، سنوضح لك كيفية إنشاء سكربت يمكن تشغيله في IE ومتصفحات أخرى.

إضافة XML باستخدام مستشهد XML من مايكروسوفت

مستشهد XML من مايكروسوفت مضمن في متصفح إنترنت إكسبلورر 5 وأعلى.

النصوص التالية تحميل مستند XML ("books.xml) تحميل المحلل:

xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async="false";
xmlDoc.load("books.xml");

توضيح الكود:

  • السطر الأول يخلق مستند XML خالي من مايكروسوفت.
  • السطر الثاني يغلق التحميل الآلي، مما يضمن عدم استمرار المحلل في تنفيذ السكربت حتى يتم تحميل المستند بشكل كامل
  • السطر الثالث يخبر المحلل بتحميل المستند المسمى "books.xml"

النصوص التالية تحميل النص المسمى "txt" إلى المحلل:

xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async="false";
xmlDoc.loadXML(txt);

ملاحظة:loadXML() يستخدم هذا الطريقة لإضافة نص (نص)، بينما load() لإضافة ملف.

محلل XML في Firefox ومتصفحات أخرى

النصوص التالية تحميل مستند XML ("books.xml) تحميل المحلل:

xmlDoc=document.implementation.createDocument("","",null);
xmlDoc.async="false";
xmlDoc.load("books.xml");

توضيح الكود:

  • السطر الأول يخلق مستند XML فارغ
  • السطر الثاني يغلق التحميل الآلي، مما يضمن عدم استمرار المحلل في تنفيذ السكربت حتى يتم تحميل المستند بشكل كامل
  • السطر الثالث يخبر المحلل بتحميل المستند المسمى "books.xml"

النصوص التالية تحميل النص المسمى "txt" إلى المحلل:

parser=new DOMParser();
xmlDoc=parser.parseFromString(txt,"text/xml");

توضيح الكود:

  • السطر الأول يخلق مستند XML فارغ
  • السطر الثاني يخبر المحلل بتحميل النص المسمى "txt"

ملاحظة:يستخدم متصفح Internet Explorer loadXML() الطريقة لتحليل نص XML، بينما تستخدم المتصفحات الأخرى DOMParser مثل.

تحليل مستند XML - مثال متعدد المتصفحات

النصوص التالية تحميل وتحليل مستند XML ("books.xml) تحميل محلل XML:

<html>
<body>
<script type="text/javascript">
try //Internet Explorer
  {
  xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
  }
catch(e)
  {
  try //Firefox, Mozilla, Opera, etc.
    {
    xmlDoc=document.implementation.createDocument("","",null);
    }
  catch(e) {alert(e.message)}
  }
try 
  {
  xmlDoc.async=false;
  xmlDoc.load("books.xml");
  document.write("xmlDoc is loaded, ready for use");
  }
catch(e) {alert(e.message)}
</script>
</body>
</html>

TIY

خطأ: Access Across Domains

لأسباب أمنية، لا تسمح المتصفحات الحديثة بالوصول عبر النطاقات.

这意味着 يجب أن تكون الصفحة وملف XML الذي يحاول تحميله موجودين على نفس الخادم.

ملف XML المفتوح في مثال CodeW3C.com موجود على نطاق CodeW3C.com.

إذا كنت تخطط لاستخدام المثال أعلاه على صفحتك الخاصة، فعليك وضع ملف XML على خادمك الخاص. وإلا، ستسبب xmlDoc.load() خطأ "Access is denied".

تحليل نص XML - مثال متعدد المتصفحات

النصوص التالية تحميل وتحليل XML

<html>
<body>
<script type="text/javascript">
text="<bookstore>"
text=text+"<book>";
text=text+"<title>Harry Potter</title>";
text=text+"<author>J K. Rowling</author>";
text=text+"<year>2005</year>";
text=text+"</book>";
text=text+"</bookstore>";
try //Internet Explorer
  {
  xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
  xmlDoc.async="false";
  xmlDoc.loadXML(text);
  }
catch(e)
  {
  try //Firefox, Mozilla, Opera, etc.
    {
    parser=new DOMParser();
    xmlDoc=parser.parseFromString(text,"text/xml");
    }
  catch(e) {alert(e.message)}
  }
document.write("xmlDoc is loaded, ready for use");
</script>
</body>
</html>

TIY

ملاحظة:يستخدم متصفح Internet Explorer طريقة loadXML() لتحليل سلسلة XML، بينما تستخدم المتصفحات الأخرى موضوع DOMParser.