محلل XML
تحتوي جميع المتصفحات الرئيسية على محلل XML مضمن للوصول إلى XML ومعالجته.
محلل XML
يحدد XML DOM (نموذج كائن المستند) خصائص وطرق الوصول إلى XML وتحريره.
ومع ذلك ، قبل التمكن من الوصول إلى مستند XML ، يجب تحميله في كائن XML DOM.
تحتوي جميع المتصفحات الحديثة على محلل XML مضمن يمكنه تحويل النص إلى كائن XML DOM.
تحليل سلسلة نصية
يوزع هذا المثال سلسلة نصية في كائن XML DOM ، ويستخرج المعلومات منه باستخدام JavaScript:
مثال
<html>
<body>
<p id="demo"></p>
<script>
var text, parser, xmlDoc;
text = "<bookstore><book>" +
"<title>Everyday Italian</title>" +
"<author>Giada De Laurentiis</author>" +
"<year>2005</year>" +
"</book></bookstore>";
parser = new DOMParser();
xmlDoc = parser.parseFromString(text,"text/xml");
document.getElementById("demo").innerHTML =
xmlDoc.getElementsByTagName("title")[0].childNodes[0].nodeValue;
</script>
</body>
</html>
شرح المثال
يتم تحديد سلسلة نصية:
text = "<bookstore><book>" +
"<title>Everyday Italian</title>" +
"<author>Giada De Laurentiis</author>" +
"<year>2005</year>" +
"</book></bookstore>";
تم إنشاء محلل XML DOM:
parser = new DOMParser();
يقوم المحلل اللغوي بإنشاء كائن XML DOM جديد باستخدام السلسلة النصية:
xmlDoc = parser.parseFromString(text,"text/xml");
الإصدارات القديمة من Internet Explorer
الإصدارات القديمة من Internet Explorer (IE5 ، IE6 ، IE7 ، IE8) لا تدعم كائن DOMParser.
للتعامل مع الإصدارات القديمة من Internet Explorer ، تحقق مما إذا كان المستعرض يدعم كائن DOMParser ، أو أنشئ كائن ActiveXObject:
مثال
if (window.DOMParser) {
// code for modern browsers
parser = new DOMParser();
xmlDoc = parser.parseFromString(text,"text/xml");
}
else {
// code for old IE browsers
xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async = false;
xmlDoc.loadXML(text);
}
كائن XMLHttpRequest
يحتوي كائن XMLHttpRequest على محلل XML مضمّن.
ترجع الخاصية responseText الاستجابة كسلسلة.
تقوم الخاصية responseXML بإرجاع الاستجابة ككائن XML DOM.
إذا كنت تريد استخدام الاستجابة ككائن XML DOM ، فيمكنك استخدام الخاصية responseXML.
مثال
اطلب الملف cd_catalog.xml واستخدم الاستجابة ككائن XML DOM:
xmlDoc = xmlhttp.responseXML;
txt = "";
x = xmlDoc.getElementsByTagName("ARTIST");
for (i = 0; i < x.length; i++) {
txt += x[i].childNodes[0].nodeValue + "<br>";
}
document.getElementById("demo").innerHTML = txt;