أحدث البرامج التعليمية وتطوير الشبكة
 

XML DOM - التنقل العقد


يمكن التنقل العقد باستخدام العلاقات العقدة.

×

رأس


التنقل DOM العقد

الحصول على العقد في شجرة العقدة عبر العلاقة بين العقد، وغالبا ما تسمى "navigating nodes" .

في XML DOM، وتعرف العلاقات عقدة من الخصائص إلى العقد:

  • parentNode
  • childNodes
  • firstChild
  • lastChild
  • nextSibling
  • previousSibling

وتوضح الصورة التالية جزء من شجرة العقدة، والعلاقة بين العقد في books.xml :

شجرة العقدة


DOM - عقدة الرئيسي

كل العقد وبالضبط العقدة الأصل واحد. التعليمة البرمجية التالية يتنقل إلى عقدة الأم ل <book> :

مثال

function myFunction(xml) {
var xmlDoc = xml.responseXML;
    var x = xmlDoc.getElementsByTagName("book")[0];
    document.getElementById("demo").innerHTML = x.parentNode.nodeName;
}
انها محاولة لنفسك »

وأوضح سبيل المثال:

  1. تحميل " books.xml " إلى xmlDoc
  2. الحصول على أول <book> العنصر
  3. الناتج اسم عقدة العقدة الأصل من "x"

تجنب العقد نص فارغ

فايرفوكس، وبعض المتصفحات الأخرى، وعلاج خالي المساحات البيضاء أو خطوط جديدة كما نص العقد، لن إنترنت إكسبلورر.

هذا يسبب مشكلة عند استخدام خصائص: firstChild، lastChild، nextSibling، previousSibling.

لتجنب التنقل إلى النص العقد فارغة (المسافات والخط الجديد أحرف بين العقد عنصر)، ونحن نستخدم وظيفة أن يتحقق نوع العقدة:

function get_nextSibling(n) {
    var y = n.nextSibling;
    while (y.nodeType! = 1) {
        y = y.nextSibling;
    }
    return y;
}

وظيفة فوق يتيح لك استخدام get_nextSibling( node ) بدلا من خاصية node .nextSibling.

وأوضح الرمز:

العقد عنصر من النوع 1. إذا كانت العقدة الأخوة ليست عقدة عنصر، فإنه ينتقل إلى العقد المقبل حتى يتم العثور على عقدة عنصر. بهذه الطريقة، فإن النتيجة تكون هي نفسها في كل من إنترنت إكسبلورر وفايرفوكس.


الحصول على عنصر الطفل الأولى

يعرض التعليمة البرمجية التالية عقدة عنصر الأولى من أول <book> :

مثال

<!DOCTYPE html>
<html>
<body>

<p id="demo"></p>

<script>
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (xhttp.readyState == 4 && xhttp.status == 200) {
myFunction(xhttp);
}
};
xhttp.open("GET", "books.xml", true);
xhttp.send();

function myFunction(xml) {
    var xmlDoc = xml.responseXML;
    var x = get_firstChild(xmlDoc.getElementsByTagName("book")[0]);
    document.getElementById("demo").innerHTML = x.nodeName;
}

//check if the first node is an element node
function get_firstChild(n) {
    var y = n.firstChild;
    while (y.nodeType != 1) {
        y = y.nextSibling;
    }
    return y;
}
</script>

</body>
</html>

الناتج:

title
انها محاولة لنفسك »

وأوضح سبيل المثال:

  1. تحميل " books.xml " إلى xmlDoc
  2. استخدام وظيفة get_firstChild في أول <book> عقدة عنصر للحصول على عقدة الطفل الأولى التي هو عقدة عنصر
  3. الناتج اسم عقدة عقدة الطفل الأولى التي هو عقدة عنصر

أمثلة

المزيد من الأمثلة

lastChild()
يستخدم هذا المثال lastChild() طريقة وظيفة مخصصة للحصول على مشاركة عقدة تابعة للعقدة

nextSibling()
يستخدم هذا المثال nextSibling() طريقة وظيفة مخصصة للحصول على عقدة الأخوة التالية من عقدة

previousSibling()
يستخدم هذا المثال previousSibling() طريقة وظيفة مخصصة للحصول على عقدة الأخوة السابقة من عقدة