تحديد العناصر XML DOM
- الصفحة السابقة متصفح DOM
- الصفحة التالية الحصول على العقد DOM
يمكن تحديد العقدة باستخدام العلاقات بين العقد.
مثال
مثال أدناه يستخدم ملف XML books.xml.
الوظيفة loadXMLDoc()، الموجود في JavaScript الخارجي، لتحميل ملف XML.
- الحصول على العقدة الأم
- يستخدم هذا المثال خاصية parentNode للحصول على العقدة الأم للعقدة.
- الحصول على أول ابن العقدة
- يستخدم هذا المثال طريقة firstChild() ووظيفة مخصصة للحصول على أول ابن لعقدة.
توجيه العقد DOM
يتم الوصول إلى العقد في شجرة العقدة من خلال العلاقات بين العقد، ويُطلق عليها عادةً "توجيه العقد" ("navigating nodes").
تحدد العلاقات بين العقد في XML DOM كخصائص العقدة:
- 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.
هذا قد يؤدي إلى مشكلة عند استخدام الاتجاهات التالية: firstChild،lastChild،nextSibling،previousSibling.
لمنع التوجيه إلى عقدة نصية فارغة (الفراغات بين العناصر ورموز النسخ واللصق)، نستخدم وظيفة لتحقق من نوع العقدة:
function get_nextSibling(n) { y = n.nextSibling; while (y.nodeType!=1) { y=y.nextSibling; } return y; }
مع هذه الوظيفة، يمكننا استخدام get_nextSibling(node) بدلاً من خاصية 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"
- استخدام دالة get_firstChild على العنصر الأول <book> للحصول على العقد الأول في العقد المكون من العناصر
- توليد اسم العقد الأول للابناء (العقد المكون من العناصر)
مثال
في المثال التالي يتم استخدام نفس الدوال بشكل مشابه:
- الصفحة السابقة متصفح DOM
- الصفحة التالية الحصول على العقد DOM