اختلافات مرورگر در XML DOM

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

مثال

مثال زیر از فایل XML استفاده می‌کند books.xml.

توابع loadXMLDoc()، در خارج از JavaScript قرار دارد و برای بارگذاری فایل XML استفاده می‌شود.

نشان‌دهنده طول لیست گره‌ها
این مثال طول لیست گره‌ها را نشان می‌دهد. در IE و مرورگرهای دیگر، نتیجه متفاوت است.
غفلت از گره‌های خالی بین گره‌ها
این مثال نوع گره nodeType را بررسی می‌کند و تنها گره‌های عناصر را پردازش می‌کند.

تفاوت‌های مرورگرها در پردازش DOM

همه مرورگرهای مدرن از استاندارد W3C DOM پشتیبانی می‌کنند.

البته، بین مرورگرها تفاوت‌هایی وجود دارد. دو تفاوت مهم وجود دارد:

  • روش‌های بارگذاری XML
  • روش‌های پردازش فضاهای خالی و خطوط خالی

در "تحلیل XML DOMاین بخش، روش‌های مختلفی که برای بارگذاری XML استفاده می‌شود را توضیح داده است.

در این بخش، ما به روش‌های مختلفی که برای پردازش فضاهای خالی و خطوط خالی استفاده می‌شود، آموزش خواهیم داد.

DOM - فضاهای خالی و خطوط خالی

XML اغلب بین گره‌ها دارای خطوط خالی یا کاراکترهای سفید است. این یک موضوع معمول در استفاده از ویرایشگرهای ساده (مانند یادداشت‌نویس) است.

مثال زیر (توسط ویرایشگر یادداشت‌ها ویرایش شده) بین هر خط دارای CR/LF است و قبل از هر زیرشاخه دو فاصله وجود دارد:

<book>
  <title>Harry Potter</title>
  <author>J K. Rowling</author>
  <year>2005</year>
  <price>29.99</price>
</book>

Firefox و برخی از مرورگرهای دیگر، خالی بودن فضاهای خالی یا خطوط خالی را به عنوان یک گره متنی در نظر می‌گیرند، در حالی که Internet Explorer این کار را نمی‌کند.

کد زیر تعداد گره‌های فرزند ریشه (books.xml) را نشان می‌دهد:}}

xmlDoc=loadXMLDoc("books.xml");
x=xmlDoc.documentElement.childNodes;
document.write("Number of child nodes: " + x.length);

مثال توضیحی:

  • با استفاده از loadXMLDoc() به"books.xml"به xmlDoc بارگذاری شود
  • گره‌های فرزند ریشه را به دست آورید
  • تولید تعداد گره‌های فرزند

نتیجه بستگی به مرورگر مورد استفاده دارد. Firefox 9 را تولید می‌کند، در حالی که IE 4 را تولید می‌کند.

TIY

غفلت از گره‌های خالی بین گره‌ها

برای نادیده گرفتن گره‌های متن خالی بین گره‌های عناصر، باید نوع گره را بررسی کنید. نوع گره عناصر 1 است:

xmlDoc=loadXMLDoc("books.xml");
x=xmlDoc.documentElement.childNodes;
for (i=0;i<x.length;i++)
{ 
if (x[i].nodeType==1)
  {// فقط گره‌های عناصر را پردازش کنید 
  document.write(x[i].nodeName);
  document.write("<br />");
  } 
}

مثال توضیحی:

  • با استفاده از loadXMLDoc() به"books.xml"به xmlDoc بارگذاری شود
  • گره‌های فرزند ریشه را به دست آورید
  • برای بررسی هر یک از گره‌های فرزند، نوع گره را بررسی کنید. اگر نوع گره "1" باشد، گره عناصر است

TIY (ساده) یا TIY (کامل)