تحلیل XML DOM

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

مستند‌کننده XML XML را به شیء قابل دسترسی توسط JavaScript تبدیل می‌کند.

مثال

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

بارگذاری و پارس کردن فایل XML
بارگذاری و پارس کردن رشته XML

پارس کردن XML

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

مستند‌کننده XML XML را به حافظه می‌خواند و آن را به شیء XML DOM قابل دسترسی توسط JavaScript تبدیل می‌کند.

مستند‌کننده 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 Document ایجاد می‌کند.
  • سطر دوم آشکارساز بارگذاری به صورت پشت سر هم را غیرفعال می‌کند، تا مطمئن شویم که سازنده قبل از اینکه اسکریپت ادامه دهد، مستند کامل بارگذاری شده است
  • سطر سوم به معنای این است که سازنده بارگذاری کند مستند به نام "books.xml" است

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

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

توجه:loadXML() این روش برای بارگذاری رشته‌ها (متن) استفاده می‌شود و load() برای بارگذاری فایل استفاده می‌شود.

سازنده XML در Firefox و دیگر مرورگرها

این بخش 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

توجه:Internet Explorer از روش loadXML() برای تحلیل رشته XML استفاده می‌کند، در حالی که سایر مرورگرها از موضوع DOMParser.