Список Узлов
Здравствуйте, уважаемые читатели блога okITgo.ru! Предлагаю вашему вниманию очередную статью рубрики DOM, в которой, как и обещал, подробно расскажу о списке узлов XML документа, а также об атрибутвном списке узлов или, как его еще называют, именованной карте узлов.
Список узлов возвращается методом getElementsByTagName() и свойством childNodes.
Попробуйте Сами – Примеры
Примеры ниже используют XML файл books.xml.
Функция loadXMLDoc(), описанная во внешнем файле JavaScript, используется для загрузки XML файла.
Получить текст из первого элемента <title>
Этот пример использует метод getElementsByTagName() для получения текста из первого элемента <title> в "books.xml".
Обход узлов в цикле, используя свойство length
Данный пример использует список узлов и свойство length для циклического обхода всех элементов <title> в "books.xml"
Получить атрибут элемента
Этот пример использует список атрибутов для получения атрибута из первого элемента <book>
в "books.xml".
Список Узлов DOM
При использовании свойств или методов, наподобие childNodes или getElementsByTagName(), возвращается объект – список узлов.
Объект список узлов представляет собой список узлов в том же порядке, в каком они идут в XML.
Доступ к узлам в списке узлов можно получить с помощью порядковых номеров (индексов), начиная с 0.
Следующий фрагмент кода загружает "books.xml" в xmlDoc, используя loadXMLDoc(), и возвращает список узлов элементов title в "books.xml":
xmlDoc=loadXMLDoc("books.xml"); x=xmlDoc.getElementsByTagName("title"); |
После выполнения предложений выше x является объектом списка узлов.
Следующий фрагмент кода возвращает текст из первого элемента <title> в списке узлов (x):
Пример
Попробуйте сами » |
После выполнения предложения выше, txt = “Самогон и другие напитки домашнего приготовления”.
Длина Списка Узлов
Список узлов обновляет сам себя. Если XML элемент удаляется или добавляется, список автоматически обновляется.
Свойство length списка узлов содержит количество узлов в списке.
Следующий фрагмент кода загружает "books.xml" в xmlDoc посредством loadXMLDoc() и возвращает количество элементов <title> в "books.xml":
xmlDoc=loadXMLDoc("books.xml"); x=xmlDoc.getElementsByTagName(‘title’).length; |
После выполнения предложения выше, x = 4.
Длина списка узлов может использоваться для циклического обхода всех элементов в списке.
Следующий фрагмент кода применяет свойство length, чтобы перебрать в цикле все элементы <title> списка:
Пример
Вывод:
Попробуйте сами » |
Объяснение примера:
- Загружаем "books.xml" в xmlDoc, используя loadXMLDoc()
- Инициализируем переменную x, присваивая ей список узлов всех элементов title
- Выводим значение текстового узла для всех элементов <title>
Список Атрибутов DOM (Именованная Карта Узла)
Свойство attributes узла элемента возвращает список атрибутивных узлов.
Он называется именованной картой узлов и сходен со списком узлов, за искючением некоторых различий в свойствах и методах.
Атрибутивный список также обновляет сам себя. Если атрибут XML удаляется или, наоборот, добавляется, список автоматически обновляется.
Следующий фрагмент кода загружает "books.xml" в xmlDoc посредством loadXMLDoc() и возвращает список узлов атрибутов для первого элемента <book> в "books.xml":
xmlDoc=loadXMLDoc("books.xml"); x=xmlDoc.getElementsByTagName(‘book’)[0].attributes; |
После выполнения кода выше, x.length = количеству атрибутов, а x.getNamedItem() может использоваться для получения узла атрибута.
Следующий фрагмент кода отображает значение атрибута "category", а также количество атрибутов книги (book):
Пример
Вывод:
Попробуйте сами » |
Объяснение примера:
- Загружаем "books.xml" в xmlDoc, применяя loadXMLDoc()
- Присваиваем переменной x значение – список всех узлов-атрибутов первого элемента <book>
- Выводим значение первого атрибута "category"
- Выводим длину списка атрибутов
Надеюсь подробные объяснения приведенных примеров помогли Вам разобраться с используемыми, на первый взгляд, простыми, но иногда служащими источниками ошибок, алгоритмами. Спасибо за внимание! До новых встреч на страницах сайта okITgo.ru.