локализация узлов 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"> //проверка, является ли первый узел узлом элемента функция 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