Доступ к Узлам
Приветствую, уважаемые читатели блога okITgo.ru! Как я уже неоднократно говорил, посредством модели DOM Вы можете получить доступ к любому узлу XML документа. Теперь перейдем от теории к практике: рассмотрим конкретные примеры использования DOM.
Попробуйте Сами – Примеры
Примеры ниже используют XML файл books.xml.
Функция loadXMLDoc(), расположенная во внешнем файле JavaScript, используется для загрузки XML файла.
Доступ к узла посредством его порядкового номера в списке узлов
Этот пример использует метод getElementsByTagname(), чтобы получить третий элемент <title> в "books.xml"
Циклический обход узлов, используя свойство length (количество узлов)
Этот пример использует свойство length для цикличекого обхода всех элементов <title> в "books.xml"
Просмотр типа узла элемента
Данный пример использует свойство nodeType, чтобы получить тип узла корневого элемента в "books.xml".
Перебор узлов элементов
Этот пример применяет свойство nodeType, чтобы перебрать только узлы элементов (исключая другие типы узлов: текстовые и т.п.) в "books.xml".
Обход узлов элементов, используя отношения между узлами
Данный пример использует свойство nodeType и свойство nextSibling, чтобы обойти все узлы элементов в "books.xml".
Доступ к Узлам
Вы можете обращаться к узлу тремя способами:
1. Используя метод getElementsByTagName()
2. Посредством циклического обхода узлов дерева (перемещения).
3. С помощью навигации по дереву узлов, используя отношения между узлами.
Метод getElementsByTagName()
getElementsByTagName() возвращает все элементы с указанным названием тега.
Синтаксис
Пример
Следующий пример возвращает все элементы <title> под элементом x:
x.getElementsByTagName("title"); |
Обращаю ваше внимание на то, что пример выше возвращает только элементы <title> под узлом x. Чтобы получить все элементы <title> в XML документе, используйте:
xmlDoc.getElementsByTagName("title"); |
где xmlDoc – это сам документ (узел документа).
Список Узлов DOM
Метод getElementsByTagName() возвращает список узлов. Список узлов – это по сути массив узлов.
Следующий код загружает "books.xml" в xmlDoc, используя loadXMLDoc() и сохраняет список узлов <title> в переменную x:
xmlDoc=loadXMLDoc("books.xml"); x=xmlDoc.getElementsByTagName("title"); |
Доступ к элементам <title> в переменной x можно получить по порядковому номеру (индексу). Чтобы получить третий узел <title>, Вы можете написать:
y=x[2]; |
Замечание: Индекс начинается с нуля 0.
В будущих статьях рубрики DOM я планирую рассказать о списках узлов в деталях.
Длина Списка Узлов DOM
Свойство length определяет длину списка узлов (количество узлов).
Вы можете обойти список узлов в цикле, используя свойство length:
Пример
Попробуйте сами » |
Объяснение примера:
- Загружаем "books.xml" в xmlDoc с помощью loadXMLDoc()
- Получаем все узлы элементов <title>
- Для каждого элемента заголовка выводим значение его текстового узла
Типы Узлов
Свойство documentElement XML документа содержит корневой узел.
Свойство nodeName узла содержит название узла.
Свойство nodeType узла содержит тип узла.
В следующей статье рубрики XML DOM я расскажу подробнее о свойствах узлов.
Обход Узлов
Следующий код обходит дочерние узлы, имеющие тип узла – элемента, корня документа в цикле:
Пример
Попробуйте сами » |
Объяснение примера:
- Загружаем "books.xml" в xmlDoc, используя loadXMLDoc()
- Получаем дочерние узлы корневого элемента
- Для каждого дочернего узла, проверяем итп узла. Если тип узла равен "1", это узел элемента
- Выводим имя узла, если это узел элемента
Навигация Посредством Отношений Между Узлами
Следующий код перемещается по дереву узлов, используя взаимоотношения между узлами:
Пример
Попробуйте сами » |
- Загружаем "books.xml" в xmlDoc с помощью loadXMLDoc()
- Получаем дочерние узлы первого элемента книги
- Устанавливаем переменную "y", присваивая ей значение первого дочернего узла первого элемента книги
- Для каждого дочернего узла (начиная с первого дочернего узла "y"):
- Проверяем тип узла. Если тип узла равен "1", этоit узел элемента
- Выводим имя узла, если это узел элемента
- Устанавливаем переменную "y", присваивая ей значение следующего узла-брата и проходим по описанному циклу заново
Напомню, что в следующей статье данной рубрики мы подробно рассмотрим свойства узлов, кому интересно – можете подписаться на обновления по электронной почте (форма справа вверху в разделе RSS). Спасибо за внимание! До новых встреч на страницах сайта okITgo.ru.