Чтение онлайн

на главную - закладки

Жанры

Windows Script Host для Windows 2000/XP

Попов Андрей Викторович

Шрифт:

 ListPersonArray;

}

//Просмотр содержимого выходного файла в Блокноте

function MakeOut {

 //Закрываем выходной файл

 FOut.Close;

 //Открываем выходной файл в Блокноте

 WshShell.Run("notepad "+PathOut,1);

}

//Построение путей к файлам

function InitPath {

 BasePath=WshShell.CurrentDirectory+"\\";

 //Путь к файлу с данными

 PathBook=BasePath+"book.xml",

 //Путь к выходному файлу

 PathOut=BasePath+"out.txt";

}

//Основная запускная функция

function Main {

 //Создаем объект WshShell

 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), и имеет один корневой элемент (узел).

Замечание

В дальнейшем в этой главе терминами "элемент" и "узел" мы будем пользоваться как синонимами. 

Описание модели XML DOM

Парсер 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
 

Просмотр содержимого записной книжки

Для того чтобы использовать схему XML DOM в сценарии SortNameMSXML.js, осуществляющем вывод информации из XML-файла book.xml в Блокнот, нужно внести изменения в три функции:

GetTagVal(obj, tgName)
,
PersonToArray(XNode)
и
FileToArray
. Сценарий, который получится в результате этих изменений, назовем SortNameXMLDOM.js.

В функции

FileToArray
сначала создается пустой массив
PersonArr
и экземпляр
XML
объекта
DOMDocument
:

PersonArr=new Array;

XML = WScript.CreateObject("Msxml.DOMDocument");

Для загрузки содержимого файла book.xml (путь к этому файлу хранится в переменной

PathBook
) в объект xml, используется метод
load
:

XML.load(PathBook);

Указатель на корневой элемент записывается в переменную

Root
с помощью свойства
documentElement
объекта
XML
:

Root=XML.documentElement;

Поделиться:
Популярные книги

Война

Валериев Игорь
7. Ермак
Фантастика:
боевая фантастика
альтернативная история
5.25
рейтинг книги
Война

Экономка тайного советника

Семина Дия
Фантастика:
фэнтези
5.00
рейтинг книги
Экономка тайного советника

Чужбина

Седой Василий
2. Дворянская кровь
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Чужбина

Мятежник

Прокофьев Роман Юрьевич
4. Стеллар
Фантастика:
боевая фантастика
7.39
рейтинг книги
Мятежник

Бестужев. Служба Государевой Безопасности. Книга вторая

Измайлов Сергей
2. Граф Бестужев
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Бестужев. Служба Государевой Безопасности. Книга вторая

Метатель. Книга 3

Тарасов Ник
3. Метатель
Фантастика:
попаданцы
альтернативная история
рпг
фэнтези
фантастика: прочее
постапокалипсис
5.00
рейтинг книги
Метатель. Книга 3

Студент из прошлого тысячелетия

Еслер Андрей
2. Соприкосновение миров
Фантастика:
героическая фантастика
попаданцы
аниме
5.00
рейтинг книги
Студент из прошлого тысячелетия

Ты не мой BOY

Рам Янка
5. Самбисты
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Ты не мой BOY

Идеальный мир для Лекаря 2

Сапфир Олег
2. Лекарь
Фантастика:
юмористическая фантастика
попаданцы
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря 2

Лекарь для захватчика

Романова Елена
Фантастика:
попаданцы
историческое фэнтези
фэнтези
5.00
рейтинг книги
Лекарь для захватчика

Отверженный VI: Эльфийский Петербург

Опсокополос Алексис
6. Отверженный
Фантастика:
городское фэнтези
альтернативная история
аниме
5.00
рейтинг книги
Отверженный VI: Эльфийский Петербург

Он тебя не любит(?)

Тоцка Тала
Любовные романы:
современные любовные романы
7.46
рейтинг книги
Он тебя не любит(?)

Убивать чтобы жить 3

Бор Жорж
3. УЧЖ
Фантастика:
героическая фантастика
боевая фантастика
рпг
5.00
рейтинг книги
Убивать чтобы жить 3

Темный Лекарь 11

Токсик Саша
11. Темный Лекарь
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Темный Лекарь 11