WshShell = WScript.CreateObject("WScript.Shell");
//Определяем пути к файлам
InitPath();
//Создаем объект FileSystemObject
FSO=WScript.CreateObject("Scripting.FileSystemObject");
//Открываем выходной файл для записи
FOut=FSO.OpenTextFile(PathOut,ForWriting,true);
//Печатаем заголовок отчета
TopReport("Сортировка по фамилии");
//Выводим содержимого файла с данными
ListFile();
//Печатаем итоговую информацию
BottomReport("Всего записей: "+PersonArr.length);
//Открываем выходной файл в Блокноте
MakeOut();
}
/******************* Начало **********************************/
Main();
/************* Конец *********************************************/
Использование XML DOM для просмотра и изменения ХМL-файла
Объектная модель XML DOM (XML Document Object Model, объектная модель документа XML ) является рекомендованным корпорацией W3C стандартом, который определяет интерфейсы, с помощью которых приложения могут загружать XML-файл, просматривать его содержимое, производить поиск, добавление, изменение и удаление данных, сохранять сделанные изменения в файле. Отметим, что в модели XML DOM документ в формате XML рассматривается как иерархическое дерево, которое состоит из элементов, называемых узлами (nodes), и имеет один корневой элемент (узел).
Замечание
В дальнейшем в этой главе терминами "элемент" и "узел" мы будем пользоваться как синонимами.
Парсер MSXML поддерживает много объектов, определяемых в модели XML DOM, с помощью которых можно решать связанные с XML задачи различного уровня сложности. Нам в дальнейшем для написания сценариев, которые осуществляют просмотр записной книжки в XML-формате, а также поиск, добавление и удаление записей из этой книжки, понадобятся только три основных объекта: DOMDocument
(представляет XML-документ в целом), XMLDOMNode
(представляет одиночный XML-элемент, т. е. один узел в дереве) и XMLDOMNodeList
(коллекция элементов, являющихся дочерними по отношению к определенному узлу в дереве, доступ к которым возможен по порядковому номеру при помощи метода item()
).
В свою очередь, объекты DOMDocument
и XMLDOMNode
имеют множество свойств и методов, некоторые из них (включая все свойства и методы, которые используются при написании сценариев для работы с записной книжкой) описаны в табл. 6.4–6.6.
Таблица 6.4.Свойства и методы объекта DOMDocument
Название |
Тип |
Описание |
childNodes |
Свойство |
Содержит коллекцию всех узлов документа. Свойство доступно только для чтения |
documentElement |
Свойство |
Содержит ссылку на корневой элемент документа. Свойство доступно как для чтения, так и для записи |
getElementsByTagName( tagName ) |
Метод |
Возвращает коллекцию всех элементов в документе, имеющих имя, которое задается параметром tagName |
hasChildNodes() |
Метод |
Возвращает true , если в документе есть элементы. В противном случае возвращает false |
load(url) |
Метод |
Загружает XML-документ из файла, путь к которому задан параметром url |
loadXML( xmlString ) |
Метод |
Загружает XML-документ, содержимое которого содержится в строке xmlString |
url |
Свойство |
Содержит путь к загруженному XML-документу. Для того чтобы изменить это свойство, нужно заново загрузить документ с помощью метода load |
Таблица 6.5.Свойства объекта XMLDOMNode
Название |
Описание |
attributes |
Содержит список атрибутов узла. Свойство доступно только для чтения |
childNodes |
Содержит коллекцию всех узлов, которые являются дочерними по отношению к данному узлу. Свойство доступно только для чтения |
firstChild |
Содержит ссылку на первый дочерний узел. Свойство доступно только для чтения |
lastChild |
Содержит ссылку на последний дочерний узел. Свойство доступно только для чтения |
nodeName |
Содержит имя узла. Свойство доступно только для чтения |
parentNode |
Содержит ссылку на родительский узел (для тех узлов, которые имеют родительский элемент). Свойство доступно только для чтения |
text |
Возвращает или устанавливает текстовое содержимое узла |
Таблица 6.6.Методы объекта XMLDOMNode
Название |
Описание |
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 |
Просмотр содержимого записной книжки
Читать дальше