Windows Script Host для Windows 2000/XP
Шрифт:
Использование XML DOM для просмотра и изменения ХМL-файла
Объектная модель XML DOM (XML Document Object Model, объектная модель документа XML) является рекомендованным корпорацией W3C стандартом, который определяет интерфейсы, с помощью которых приложения могут загружать XML-файл, просматривать его содержимое, производить поиск, добавление, изменение и удаление данных, сохранять сделанные изменения в файле. Отметим, что в модели XML DOM документ в формате XML рассматривается как иерархическое дерево, которое состоит из элементов, называемых узлами (nodes), и имеет один корневой элемент (узел).
В дальнейшем в этой главе терминами "элемент" и "узел" мы будем пользоваться как синонимами.
Описание модели XML DOM
Парсер MSXML поддерживает много объектов, определяемых в модели XML DOM, с помощью которых можно решать связанные с XML задачи различного уровня сложности. Нам в дальнейшем для написания сценариев, которые осуществляют просмотр записной книжки в XML-формате, а также поиск, добавление и удаление записей из этой книжки, понадобятся только три основных объекта:
В свою очередь, объекты
Таблица 6.4. Свойства и методы объекта
Название | Тип | Описание |
---|---|---|
childNodes | Свойство | Содержит коллекцию всех узлов документа. Свойство доступно только для чтения |
documentElement | Свойство | Содержит ссылку на корневой элемент документа. Свойство доступно как для чтения, так и для записи |
getElementsByTagName(tagName) | Метод | Возвращает коллекцию всех элементов в документе, имеющих имя, которое задается параметром tagName |
hasChildNodes | Метод | Возвращает true , если в документе есть элементы. В противном случае возвращает false |
load(url) | Метод | Загружает XML-документ из файла, путь к которому задан параметром url |
loadXML(xmlString) | Метод | Загружает XML-документ, содержимое которого содержится в строке xmlString |
url | Свойство | Содержит путь к загруженному XML-документу. Для того чтобы изменить это свойство, нужно заново загрузить документ с помощью метода load |
Таблица 6.5.
Название | Описание |
---|---|
attributes | Содержит список атрибутов узла. Свойство доступно только для чтения |
childNodes | Содержит коллекцию всех узлов, которые являются дочерними по отношению к данному узлу. Свойство доступно только для чтения |
firstChild | Содержит ссылку на первый дочерний узел. Свойство доступно только для чтения |
lastChild | Содержит ссылку на последний дочерний узел. Свойство доступно только для чтения |
nodeName | Содержит имя узла. Свойство доступно только для чтения |
parentNode | Содержит ссылку на родительский узел (для тех узлов, которые имеют родительский элемент). Свойство доступно только для чтения |
text | Возвращает или устанавливает текстовое содержимое узла |
Таблица 6.6. Методы объекта
Название | Описание |
---|---|
appendChild(NewElem) | Добавляет новый элемент NewElem в качестве последнего дочернего элемента. В качестве результата возвращает ссылку на добавленный узел |
cloneNode(deep) | Создает новый узел, который является точной копией текущего узла. Параметр deep — это логическая константа, которая указывает, нужно ли при создании нового узла копировать дочерние узлы текущего элемента (deep=true) , либо этого делать не следует (deep=true) |
hasChildNodes | Возвращает true , если у узла есть дочерние элементы. В противном случае возвращает false |
removeChild(OldElem) | Удаляет дочерний элемент, ссылка на который содержится в параметре OldElem |
replaceChild(OldElem, NewElem) | Заменяет элемент, ссылка на который содержится в параметре OldElem , на элемент, ссылка на который содержится в параметре NewElem |
selectNodes(patternString) | Производит поиск дочерних элементов, содержимое которых удовлетворяет шаблону поиска patternString . В результате возвращает объект XMLDOMNodeList , содержащий коллекцию всех найденных узлов |
selectSingleNode(patternString) | Производит поиск первого дочернего элемента, содержимое которого удовлетворяет шаблону поиска patternString . В случае удачного поиска возвращает ссылку на найденный элемент, в противном случае возвращает Null |
Просмотр содержимого записной книжки
Для того чтобы использовать схему XML DOM в сценарии SortNameMSXML.js, осуществляющем вывод информации из XML-файла book.xml в Блокнот, нужно внести изменения в три функции:
В функции
Для загрузки содержимого файла book.xml (путь к этому файлу хранится в переменной
Указатель на корневой элемент записывается в переменную