همان طور که روش اتصال به فایل xml در مرورگرهای مختلف متفاوت بود
روش بدست اورد ن محتوای تگ های مورد نظر از فایل xml نیز برای مرورگرهای مختلف متفاوت است
 
ایا مرورگر IE است ؟
شرط زیر اگر true باشد یعنی مرورگر IE است

 

 if (window.ActiveXObject)

 
اگر مرورگرIE است چگونه می توان مقدار تگ های مورد نظر را بدست اورد؟
حالا اگر مرورگر IE بود چگونه می توان مقدار تگ هایی که در PATH مشخص کردیم را بدست اوریم ؟
 جواب : با دستور زیر

 

var nodes=xml.selectNodes(path);

 
 در مورد دستور بالا بیان نکات زیر الزامی است :
 1- xml همان متغیری بود که به فایل book.xml اشار ه کرد

 2- دستور selectNodes باعث پیدا شدن node های مورد نظر در فایلی می شود که متغیر xml به ان اشاره می کند

اما کدام node ها ؟

node هایی که در متغیر path  مشخص کرده ایم

 

 3- اما در فصل قبلی گفتم ممکن است چندین مورد از node مورد نظر در فایل xml ما موجود باشد پس جواب دستور selectNodes  چندین مورد است

 

این چندین مورد با هم تشکیل یک ارایه را می دهند

این ارایه در متغیر nodes قرار می گیرد ( نام این متغیر اختیاری انتخاب شده است )

 

تذکر مهم :

دقت کنید همانطور که متغیر XML به فایل BOOK.XML اشاره می کند

ارایه  و هر خانه ارایه هم به هر تگ TITILE که در فایل BOOK.XML است ، اشاره می کند

 
در جاوا اسکریپت ، اندیس خانه اول ارایه 0 است

 اما ارایه nodes  چند خانه پیدا کرده است ؟

بستگی به تعداد موارد یافت شده دارد

 با دستور زیر می توان فهمید که ارایه nodes چند خانه پیدا کرده است :

 

nodes.length

نمایش محتوای ارایه اگر مرورگر IEباشد

 یک حلقه می خواهیم - ما در این جا از حلقه FOR استفاده می کنیم

که شمارنده اش از صفر تا عدد کمتر از تعداد خانه های ارایه در هر دور اجرای حلقه ، یکی یکی اضافه شود

 

  for (i=0;i<nodes.length;i++)

 
برای دسترسی به هر تگ TITILE مورد نظر باید از مدل XML DOM استفاده شود
مدل XML DOM برای دسترسی به محتوای NODE
کلمه childNodes یک دستور است که به node های دورن node مورد نظر ما اشاره دارد
 در فصلهای اول اموزش XPATH گفتم که :
 انواع NODE ها وجود دارد
 یک نوع ان را ELELMENT نام گذاری کردیم و گفتیم هر وقت بیان شد ELENMENT NODE یعنی ما تگ می خواهیم
 اما نوع دیگری از NODE به نام TEXT بود که همان محتوای تگ است

 مثلا در دستور زیر :

<TITILE> HELLO </TITILE>

titile یک NODE از نوع element است
 و

 hello

یک node از نوع text است

 ما node های مثل هم را از صفر شماره گذاری می کنیم
 مثلا در همین دستور :
 درون تگ titile یک node بیشتر نیست و ان متن hello است پس اندیس این node صفر است

 پس دستور

childNodes[0]

یعنی اولین node  که درون node مورد نظر ما می باشد.....

 حالا از اولین node که درون node مورد نظر ما می باشد چه چیزش را می خواهیم ؟

جواب :

مقدارش را

یعنی nodeValue اش را

پس از هر خانه ارایه nodes که به یکی از titile ها اشاره دارد مقدار اولین node درونش را می خواهیم

( node های درون هر node دیگر ، فرزندان ان هستند)

 پس دستور بصورت زیر است :

 

nodes[i].childNodes[0].nodeValue

 
حالا باید بگوئیم این مقدار را روی خروجی نمایش بدهد :
دستور نمایش خروجی در جاوا اسکریپت دستور زیر است :

 

document.write

پس حلقه for کامل شده بصورت زیر است :

 

for (i=0;i<nodes.length;i++)
  {
  document.write(nodes[i].childNodes[0].nodeValue);
  document.write("<br>");
  }

دیگر نیازی نیست بگویم که دستورات دورن  این حلقه برای هر تگ titile تگرار می شود

 
مشاهده و اجرای برنامه کامل
ادامه در فصل بعد ....