定位 XML DOM نود

می‌توان گره‌ها را با استفاده از روابط گره مکان‌یابی کرد.

مکان‌یابی گره DOM

با استفاده از روابط گره، به گره‌های درخت گره‌ها دسترسی پیدا می‌کند، معمولاً به این عنوان شده

در XML DOM، روابط گره به عنوان ویژگی‌های گره تعریف شده‌اند:

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

تصویر زیر books.xml یک بخش از درخت گره‌ها و توضیح روابط گره‌ها را نشان می‌دهد:

درخت نودهای DOM

DOM - پدر گره

همه گره‌ها فقط یک پدر دارند. کد زیر به پدر گره <book> هدایت می‌شود:

مثال

تابع 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

برای جلوگیری از حرکت به گره‌های متن خالی (فضاهای خالی و خطوط شکستگی بین گره‌های عنصر)، ما از یک تابع برای بررسی نوع گره استفاده می‌کنیم:

تابع 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 (this.readyState == 4 && this.status == 200) {
        myFunction(this);
    }
};
xhttp.open("GET", "books.xml", true);
xhttp.send();
تابع myFunction(xml) {
    var xmlDoc = xml.responseXML;
    var x = get_firstChild(xmlDoc.getElementsByTagName("book")[0]);
    document.getElementById("demo").innerHTML = x.nodeName;
}
// بررسی اولین نقطه آیا نقطه عناصر است یا خیر
تابع get_firstChild(n) {
    var y = n.firstChild;
    while (y.nodeType != 1) {
        y = y.nextSibling;
    }
    return y;
}
</script>
</body>
</html>

شما خودتان امتحان کنید

توضیح مثال:

  1. به books.xml به xmlDoc بارگذاری شود
  2. از تابع get_firstChild روی اولین نقطه <book> استفاده کنید تا اولین فرزند نقطه را دریافت کنید
  3. نام نقطه اولین فرزند را بیرون می‌دهد

مثال‌های بیشتر

lastChild()
استفاده از روش lastChild() و تابع تعریف شده برای دریافت آخرین فرزند یک نقطه.
nextSibling()
برای دسترسی به گره‌ی همکلاسی بعدی از روش nextSibling() و توابع تعریف شده خود استفاده کنید.
previousSibling()
برای دسترسی به گره‌ی همکلاسی قبلی از روش previousSibling() و توابع تعریف شده خود استفاده کنید.