定位 گرههای XML DOM
- صفحه قبلی DOM مرورگر
- صفحه بعدی DOM دریافت گره
میتوان نودها را با استفاده از روابط بین آنها جستجو کرد.
مثال
مثال زیر از فایل XML استفاده میکند books.xml.
توابع loadXMLDoc()، که در JavaScript خارجی قرار دارد و برای بارگذاری فایل XML استفاده میشود.
- دسترسی به نود والد
- این مثال از property parentNode برای دریافت گره پدر استفاده میکند.
- دریافت اولین فرزند گره
- این مثال از method firstChild() و یک function تعریف شده برای دریافت اولین فرزند گره استفاده میکند.
定位 DOM گرهها
با استفاده از روابط بین گرهها به گرههای درخت گرهها دسترسی پیدا میکنیم، معمولاً به این عمل "定位 گرهها" ("navigating nodes") میگویند.
در XML DOM، روابط گرهها به عنوان properties گره تعریف شدهاند:
- parentNode
- childNodes
- firstChild
- lastChild
- nextSibling
- previousSibling
تصویر زیر نمایش میدهد: books.xml یک بخش از درخت گرهها است و روابط گرهها را توضیح میدهد:

DOM - گره پدر
همه گرهها فقط یک گره پدر دارند. کد زیر برای پیدا کردن گره پدر <book> استفاده میشود:
xmlDoc=loadXMLDoc("books.xml"); x=xmlDoc.getElementsByTagName("book")[0]; document.write(x.parentNode.nodeName);
توضیح مثال:
- با استفاده از loadXMLDoc() در "books.xmlبه xmlDoc " بارگذاری شود
- گره اولین <book> را دریافت کنید
- نام گره پدر "x" را نمایش دهید
جلوگیری از گرههای متن خالی
Firefox و برخی از مرورگرهای دیگر، فضاهای خالی و کارتهای برشی خالی را به عنوان گرههای متن در نظر میگیرند، در حالی که IE این کار را نمیکند.
این ممکن است با استفاده از این properties مشکلی ایجاد کند: firstChild،lastChild،nextSibling،previousSibling.
برای جلوگیری از定位 به گرههای متن خالی (فضاهای خالی و کارتهای برشی بین گرههای عنصر)، ما از یک تابع برای بررسی نوع گره استفاده میکنیم:
function get_nextSibling(n) { y=n.nextSibling; while (y.nodeType!=1) { y=y.nextSibling; } return y; }
با استفاده از این تابع، میتوانیم از get_nextSibling(node) به جای property node.nextSibling استفاده کنیم.
توضیح کد:
نوع گره عنصر 1 است. اگر گرههای هم سطح گره عنصر نیستند، به گره بعدی حرکت کنید تا گره عنصر پیدا شود. با این روش، در IE و Firefox میتوانید نتایج مشابهی دریافت کنید.
گره اولین را دریافت کنید
کد زیر اولین عنصر گره <book> را نمایش میدهد:
<html> <head> <script type="text/javascript" src="loadxmldoc.js"> </script> <script type="text/javascript"> //بررسی کنید که اولین گره یک گره عنصر است function get_firstChild(n) { y=n.firstChild; while (y.nodeType!=1) { y=y.nextSibling; } return y; } </script> </head> <body> <script type="text/javascript"> xmlDoc=loadXMLDoc("books.xml"); x=get_firstChild(xmlDoc.getElementsByTagName("book")[0]); document.write(x.nodeName); </script> </body> </html>
خروجی:
title
توضیح مثال:
- با استفاده از loadXMLDoc() در "books.xmlدر xmlDoc بارگذاری میشود
- در اولین <book> از توابع get_firstChild استفاده میشود تا اولین فرزند گرهای که در آن قرار دارد را دریافت کند
- نام گره اولین فرزند (گرهای که به عنوان فرزند یک عنصر است) را بیرون میدهد
مثال
در مثال زیر از همان توابع استفاده شده است:
- صفحه قبلی DOM مرورگر
- صفحه بعدی DOM دریافت گره