ایکس ایم ال DOM تحلیل

بیشتر مرورگرها پردازکن XML داخلی دارند که برای خواندن و عمل کردن بر روی XML استفاده می‌شود.

پردازکن XML را به یک آوائیج قابل دسترسی برای جاوااسکریپت تبدیل می‌کند.

مثال

مثال‌های ارائه شده توسط CodeW3C.com مستقل از مرورگر و پلتفرم هستند. این مثال‌ها در همه مرورگرهای مدرن قابل اجرا هستند.

فایل XML را لواد و پرداز کن
استرینگ XML را لواد و پرداز کن

XML پرداز

همه مرورگرهای مدرن پردازکن XML داخلی دارند که برای خواندن و عمل کردن بر روی XML استفاده می‌شود.

پردازکن XML را در حافظه می‌خواند و آن را به یک آوائیج XML DOM قابل دسترسی برای جاوااسکریپت تبدیل می‌کند.

میکروسافت XML پردازکن با پردازکن‌های دیگر مرورگرها تفاوت دارد. پردازکن میکروسافت از لواد کردن فایل‌های XML و استرینگ‌های XML (متن) پشتیبانی می‌کند، در حالی که دیگر مرورگرها از پردازکن‌های جداگانه استفاده می‌کنند. با این حال، همه پردازکن‌ها شامل توابعی برای جستجو در درخت XML، دسترسی، اضافه کردن و حذف گره‌ها هستند.

در این درس، ما به تو خواهیم آموخت که چگونه اسکریپتی را ایجاد کنی که می‌تواند در IE و دیگر مرورگرها اجرا شود.

XML را از طریق میکروسافت XML پردازکن لواد کنی

میکروسافت XML پردازکن در اینترنت ایکسپلورر 5 و نسخه‌های بالاتر بنا شده است.

مستند JavaScript زیر یک مستند XML را ("books.xml) بارگذاری سازنده تحلیل‌دهنده را:

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

توضیح کد:

  • ایک خالی میکروسافت XML داکومن آوائیج کریئر کریا جائیگا
  • خط دوم آیتم بارگذاری همزمان را غیرفعال می‌کند، تا اطمینان حاصل شود که سازنده تحلیل‌دهنده قبل از اینکه اسکریپت ادامه دهد، مستند کامل بارگذاری شده است
  • خط سوم به سازنده تحلیل‌دهنده می‌گوید که یک مستند به نام "books.xml" را بارگذاری کند

مستند JavaScript زیر یک رشته به نام txt را در سازنده تحلیل‌دهنده بارگذاری می‌کند:

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

تعلیمات:loadXML() میتواند استرینگ (متن) را لواد کنی، در حالی که load() استعمال کریئر فائل

در Firefox و دیگر مرورگرها سازنده تحلیل‌دهنده XML

مستند JavaScript زیر یک مستند XML را ("books.xml) بارگذاری سازنده تحلیل‌دهنده را:

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

توضیح کد:

  • خط اول یک مستند XML خالی را ایجاد می‌کند
  • خط دوم آیتم بارگذاری همزمان را غیرفعال می‌کند، تا اطمینان حاصل شود که سازنده تحلیل‌دهنده قبل از اینکه اسکریپت ادامه دهد، مستند کامل بارگذاری شده است
  • خط سوم به سازنده تحلیل‌دهنده می‌گوید که یک مستند به نام "books.xml" را بارگذاری کند

مستند JavaScript زیر یک رشته به نام 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

Error: 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

تعلیمات:اینٹرنیشنل ایکسپلورر استعمال loadXML() مہم کے ذریعہ XML حروف زبانی کو پارسی کرتا ہے، جبکہ دیگر بروزر استعمال DOMParser آٹیٹک