Свойства firstChild, lastChild, nextSibling, parentNode и previousSibling элемента XML

Рубрика: DOM - Объектная Модель Документа

Здравствуйте, уважаемые посетители okITgo.ru! Сегодня предлагаю рассмотреть свойства XML объекта Элемент, позволяющие получить доступ к родственным узлам, а именно firstChild – первый дочерний элемент, lastChild – последний дочерний элемент, nextSibling – следующий сестринский узел, parentNode – родительский элемент и previousSibling – предыдущий сестринский узел.

Свойство firstChild


Все Свойства Объекта Элемент Объект Элемент

Определение и Использование

Свойство firstChild возвращает первый дочерний узел выбранного узла

Если выбранный узел не имеет детей, это свойство вернет NULL.

Синтаксис

elementNode.firstChild


Советы и Замечания

Замечание: Firefox и большинство других браузеров будут трактовать пустые пробельные символы и переходы на новую строку как текстовые узлы, в отличие от браузера Internet Explorer. Таким образом, в примере ниже имеется функция, которая проверяет тип узла первого дочернего элемента.

Узлы элементов имеют тип узла 1, так что если первый дочерний узел не является узлом элемента, функция переходит к следующему узлу и проверяет его (является ли он элементом). Это продолжается до тех пор, пока первый дочерний узел (который должен быть узлом элемента) не будет найден. В итоге, результат работы кода будет одинаковым во всех браузерах.

Совет: Чтобы прочитать больше о различиях между браузерами, читайте пост DOM Браузеры.


Пример

Следующий фрагмент кода загружает "books.xml" в xmlDoc с помощью loadXMLDoc() и получает первый дочерний узел:

Пример

//проверка того, что первый дочерний узел является элементом
function get_firstchild(n)
{
x=n.firstChild;
while (x.nodeType!=1)
  {
  x=x.nextSibling;
  }
return x;
}

xmlDoc=loadXMLDoc("books.xml");

x=xmlDoc.documentElement;
firstNode=get_firstchild(x);

for (i=0;i<firstNode.childNodes.length;i++)
{
if (firstNode.childNodes[i].nodeType==1)
  {
  //Обрабатывать только узлы – элементы
  document.write(firstNode.childNodes[i].nodeName);
  document.write(" = ");
  document.write(firstNode.childNodes[i].childNodes[0].nodeValue);
  document.write("");
  }
}

Вывод кода выше будет:

title = Самогон и другие спиртные напитки домашнего приготовления
author = Байдакова Ирина
year = 2005
price = 30.00

Попробуйте сами »


Свойство lastChild


Все Свойства Объекта Элемент Объект Элемент

Определение и Использование

Свойство lastChild возвращает последний дочерний узел выбранного элемента

Если выбранный узел не имеет детей, это свойство возвращает NULL.

Синтаксис

elementNode.lastChild
 

Советы и Замечания

Замечание: Firefox и большинство других браузеров будут трактовать пустые пробельные символы и переходы на новую строку как текстовые узлы, в отличие от браузера Internet Explorer. Таким образом, в примере ниже имеется функция, которая проверяет тип узла последнего дочернего элемента.

Узлы элементов имеют тип узла 1, так что если последний дочерний узел не является узлом элемента, функция переходит к предыдущему узлу и проверяет его (является ли он элементом). Это продолжается до тех пор, пока последний дочерний узел (который должен быть узлом элемента) не будет найден. В итоге, результат работы кода будет одинаковым во всех браузерах.

Чтобы прочитать больше о различиях между браузерами, смотрите пост DOM Браузеры.


Пример

Следующий фрагмент кода загружает "loadXMLDoc(), и находит последний дочерний узел:

Пример

//проверка, что последний дочерний узел является узлом элемента
function get_lastchild(n)
{
x=n.lastChild;
while (x.nodeType!=1)
  {
  x=x.previousSibling;
  }
return x;
}

xmlDoc=loadXMLDoc("books.xml");

x=xmlDoc.documentElement;
lastNode=get_lastchild(x);

for (i=0;i<lastNode.childNodes.length;i++)
{
if (lastNode.childNodes[i].nodeType==1)
  {
  //Обрабатывать только узлы-элементы
  document.write(lastNode.childNodes[i].nodeName);
  document.write(" = ");
  document.write(lastNode.childNodes[i].childNodes[0].nodeValue);
  document.write("");
  }
}

Вывод кода выше будет:

title = Библия JavaScript 4-е Издание
author = Дэнни Гудман
year = 2003
price = 39.95

Попробуйте сами »


Свойство nextSibling


Все Свойства Объекта Элемент Объект Элемент

Определение и Использование

Свойство nextSibling возвращает следующий сестринский узел (следующий узел на том же самом уровне дерева) выбранного элемента

Если такого узла нет, это свойство вернет null.

Синтаксис

elementNode.nextSibling
 

Советы и Замечания

Замечание: Firefox и большинство других браузеров будут трактовать пустые пробельные символы и переходы на новую строку как текстовые узлы, в отличие от браузера Internet Explorer. Таким образом, в примере ниже имеется функция, которая проверяет тип узла следующего сестринского узла.

Узлы элементов имеют тип узла 1, так что если следующий сестринский узел не является узлом элемента, функция переходит к идущему за ним узлу и проверяет его (является ли он элементом). Это продолжается до тех пор, пока следующий сестринский узел (который должен быть узлом элемента) не будет найден. В итоге, результат работы кода будет одинаковым во всех браузерах.

Чтобы прочитать больше о различиях между браузерами, смотрите пост DOM Браузеры.


Пример

Следующий фрагмент кода загружает "books.xml" в xmlDoc, используя loadXMLDoc(), и получает следующий сестринский узел первого элемента <title>:

Пример

//проверка, что следующий сестринский узел является узлом-элементом
function get_nextsibling(n)
{
x=n.nextSibling;
while (x.nodeType!=1)
  {
  x=x.nextSibling;
  }
return x;
}

xmlDoc=loadXMLDoc("books.xml");

x=xmlDoc.getElementsByTagName("title")[0];
document.write(x.nodeName);
document.write(" = ");
document.write(x.childNodes[0].nodeValue);

y=get_nextsibling(x);

document.write("Следующий сестринский узел: ");
document.write(y.nodeName);
document.write(" = ");
document.write(y.childNodes[0].nodeValue);

Вывод кода выше будет:

title = Самогон и другие спиртные напитки домашнего приготовления
Следующий сестринский узел: author = Байдакова Ирина

Попробуйте сами »


Демонстрации – Попробуйте Сами

previousSibling – Получение предыдущего сестринского узла


Свойство parentNode


Все Свойства Объекта Элемент Объект Элемент

Определение и Использование

Свойство parentNode возвращает родительский узел указанного элемента.

Синтаксис

elementNode.parentNode
 

Пример

Следующий фрагмент кода загружает "books.xml" в xmlDoc посредством loadXMLDoc() и получает родительский узел первого элемента <title> в "books.xml":

Пример

xmlDoc=loadXMLDoc("books.xml");

x=xmlDoc.getElementsByTagName("title")[0];
parent=x.parentNode;

document.write("Родительский узел: " + parent.nodeName);

Вывод кода выше будет:

Родительский узел: book

Попробуйте сами »


Свойство previousSibling


Все Свойства Объекта Элемент Объект Элемент

Определение и Использование

Свойство previousSibling возвращает предыдущий сестринский узел (узел, идущий непосредственно перед выбранным узлом на том же уровне дерева) выбранного элемента

Если такого узла не существует, то это свойство возвращает null.

Синтаксис

elementNode.previousSibling
 

Советы и Замечания

Замечание: Firefox и большинство других браузеров будут трактовать пустые пробельные символы и переходы на новую строку как текстовые узлы, в отличие от браузера Internet Explorer. Таким образом, в примере ниже имеется функция, которая проверяет тип узла предыдущего сестринского узла.

Узлы элементов имеют тип узла 1, так что если предыдущий сестринский узел не является узлом элемента, функция переходит к идущему перед ним узлу и проверяет его (является ли он элементом). Это продолжается до тех пор, пока предыдущий сестринский узел (который должен быть узлом элемента) не будет найден. В итоге, результат работы кода будет одинаковым во всех браузерах.

Чтобы прочитать больше о различиях между браузерами, смотрите пост DOM Браузеры.


Пример

Следующий фрагмент кода загружает "books.xml" в xmlDoc, используя loadXMLDoc(), и получает предыдущий сестринский узел первого элемента <author>:

Пример

//проверка, что предыдущий сестринский узел является узлом-элементом
function get_previoussibling(n)
{
x=n.previousSibling;
while (x.nodeType!=1)
  {
  x=x.previousSibling;
  }
return x;
}

xmlDoc=loadXMLDoc("books.xml");

x=xmlDoc.getElementsByTagName("author")[0];
document.write(x.nodeName);
document.write(" = ");
document.write(x.childNodes[0].nodeValue);

y=get_previoussibling(x);

document.write("Предыдущий сестринский узел: ");
document.write(y.nodeName);
document.write(" = ");
document.write(y.childNodes[0].nodeValue);

Вывод кода выше будет:

author = Байдакова Ирина
Предыдущий сестринский узел: title = Самогон и другие спиртные напитки домашнего приготовления

Попробуйте сами »


Демонстрации – Попробуйте Сами

nextSibling – Получение следующего сестринского узла


Все Свойства Объекта Элемент Объект Элемент