Свойства узла childNodes, firstChild, lastChild, nextSibling, previousSibling и parentNode – Часть 2

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

Приветствую, уважаемые посетители okITgo.ru! Сегодня мы рассмотрим следующую группу свойств объекта Узел объектной модели XML документа DOM: childNodes, firstChild, lastChild, nextSibling, previousSibling и parentNode. Эти свойства можно использовать для доступа к “родственникам” текущего узласписку дочерних узлов, первому / последнему сыну, следующему / предыдущему брату, а также к родительскому узлу.

Свойство childNodes


Справочник Объекта Узел Объект Узел

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

Свойство childNodes возвращает список дочерних узлов для указанного узла в виде объекта Список Узлов.

Синтаксис

nodeObject.childNodes


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

Совет: Используйте свойство length объекта Список Узлов, чтобы определить количество узлов в списке узлов. Когда Вы знаете длину списка узлов, Вы можете легко обойти его в цикле и извлечь значения, которые Вам необходимы.


Пример

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

Пример

xmlDoc=loadXMLDoc("books.xml");

x=xmlDoc.childNodes;
for (i=0;i<x.length;i++)
{
document.write("Имя узла: " + x[i].nodeName);
document.write(" (тип узла: " + x[i].nodeType + ")");
}

Вывод IE:

Имя узла: xml (тип узла: 7)
Имя узла: #comment (тип узла: 8)
Имя узла: bookstore (тип узла: 1)

Вывод Mozilla (Firefox):

Имя узла: #comment (тип узла: 8)
Имя узла: bookstore (тип узла: 1)

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


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

Показать все дочерние узлы в всех элементов в XML документе


Свойство firstChild


Справочник Объекта Узел Объект Узел

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

Свойство firstChild возвращает первого сына указанного узла.

Синтаксис

nodeObject.firstChild


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

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

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

Совет: Чтобы узнать больше о различиях между браузерами, смотрите статью о Различиях Между Браузерами при Разборе XML Документа с помощью 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=get_firstchild(xmlDoc);
document.write("Имя узла: " + x.nodeName);
document.write(" (тип узла: " + x.nodeType);

Вывод:

Имя узла: bookstore (тип узла: 1)

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


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

Получить последний дочерний узел документа


Свойство lastChild


Справочник Объекта Узел Объект Узел

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

Свойство lastChild возвращает последний дочерний узел указанного узла.

Синтаксис

nodeObject.lastChild


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

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

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

Совет: Чтобы узнать больше о различиях между браузерами, смотрите статью о Различиях Между Браузерами при Разборе XML Документа с помощью DOM Парсера.


Пример

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

Пример

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

xmlDoc=loadXMLDoc("books.xml");

x=get_lastchild(xmlDoc);
document.write("Имя узла: " + x.nodeName);
document.write(" (тип узла: " + x.nodeType);

Вывод:

Имя узла: bookstore (тип узла: 1)

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


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

Получить первый дочерний узел документа




Свойство nextSibling


Справочник Объекта Узел Объект Узел

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

Свойство nextSibling возвращает узел, сразу же следующий за данным узлом (следующий узел на том же уровне дерева).

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

Синтаксис

nodeObject.nextSibling


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

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

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

Совет: Чтобы узнать больше о различиях между браузерами, смотрите статью о Различиях Между Браузерами при Разборе XML Документа с помощью 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 возвращает родительский элемент узла.

Синтаксис

nodeObject.parentNode

Пример

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

Пример

xmlDoc=loadXMLDoc("books.xml");

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

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

Результат работы этого кода будет:

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

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


Свойство previousSibling


Справочник Объекта Узел Объект Узел

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

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

Если таких узлов нет, то возвращается null.

Синтаксис

nodeObject.previousSibling

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

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

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

Совет: Чтобы узнать больше о различиях между браузерами, смотрите статью о Различиях Между Браузерами при Разборе XML Документа с помощью 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 – Получение следующего сестринского узла


Справочник Объекта Узел Объект Узел