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

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

Жанры

Windows Script Host для Windows 2000/XP

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

Шрифт:

 MakePersonRec;

 //Сохраняем данные из объекта PersonRec в XML-файл

 RecordToFile(PersonRec);

}

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

function InitPath {

 BasePath=WshShell.CurrentDirectory+"\\";

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

 PathBook=BasePath+"book.xml";

}

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

function Main {

 var Res;

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

 WshShell = WScript.CreateObject("WScript.Shell");

 //Определяем пути к файлам

 InitPath;

 //Запрос на создание нового ключа

 Res=WshShell.Popup("Добавить запись в \n"+PathBook+"?", 0,

"Работа с XML-файлом", vbQuestion+vbYesNo);

 if (Res==vbYes) { //Нажата кнопка Да

//Добавляем новую запись в книжку

AddRecord;

//Выводим информацию на экран

WshShell.Popup("Новая запись\n\n"+PersonRec.LastName+" "+

PersonRec.Name+"\n"+PersonRec.Phone+"\n"+

PersonRec.Street+", "+PersonRec.House+"-"+PersonRec.App+"\n\n"+

"добавлена в файл "+PathBook, 0,

"Работа с XML-файлом", vbInformation+vbOkOnly);

 }

}

/******************* Начало **********************************/

Main;

/************* Конец *********************************************/
 

Поиск и удаление записи из книжки 

Рассмотрим сценарий FindAndDelRecord.wsf, с помощью которого можно будет полностью удалить из записной книжки данные о человеке, фамилия которого введена в диалоговом окне (рис. 6.1).

Рис. 6.1. Ввод фамилии для удаления

Сценарий FindAndDelRecord.wsf реализован в виде WS-файла для того, чтобы можно было внутри JScript-кода воспользоваться функцией

InputName
на языке VBScript, которая реализует диалоговое окно с полем ввода, показанное на рис. 6.1:

Function InputName

 'Вводим фамилию в диалоговом окне

 InputName = InputBox("Введите фамилию для удаления:", "Записная книжка")

End Function

Фамилия, которую следует найти и удалить в записной книжке, сохраняется в глобальной переменной

LastName
:

LastName=InputName;

Непосредственно поиск и удаление данных производятся в функции

FindAndDelRecord
.
Здесь, как и во всех рассмотренных ранее примерах, сначала создается экземпляр
XMLDoc
объекта
DOMDocument
, с помощью метода
load
загружается файл book.xml и указатель на корневой элемент сохраняется в переменной
Root
:

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

XMLDoc.load(PathBook);

Root=XMLDoc.documentElement;

Для выделения в записной книжке всех фамилий, которые требуется удалить, используется метод

selectNodes
. В качестве аргумента этого метода подставляется строка
sSelect
, которая указывает, что нужно искать расположенные внутри элементов
Person
элементы с именем
LastName
и значением, которое совпадает со значением переменной
LastName
. Все найденные элементы помещаются в коллекцию
NodeList
:

//Формируем строку для поиска фамилии

sSelect="Person/LastName[text='"+LastName+"']";

//Создаем коллекцию NodeList всех элементов LastName,

//значение которых совпадает со значением переменной LastName

NodeList=XMLDoc.documentElement.selectNodes(sSelect);

Если найден хотя бы один подходящий элемент

LastName
, т.е. коллекция
NodeList
не является пустой, то для каждого такого элемента в цикле
for
определяется родительский элемент (в нашем случае это элемент
Person
) и этот элемент вместе со всеми своими дочерними элементами удаляется с помощью метода
removeChild
:

for (i=0;i<=NodeList.length-1;i++) {

 //Определяем родительский элемент (Person) для найденного

 //элемента LastName

 Parent=NodeList.item(i).parentNode;

 //Удаляем элемент Person вместе со всеми его дочерними элементами

 Root.removeChild(Parent);

 //Выводим диалоговое окно с сообщением

 WshShell.Popup("Запись удалена!",0,

"Работа с XML-файлом",vbInformation+vbOkOnly);

}

После удаления всех записей содержимое XML-файла book.xml сохраняется на диске с помощью метода

save
:

XMLDoc.save(PathBook);

Полный текст сценария FindAndDelRecord.wsf приводится в листинге 6.6.

Листинг 6.6. Поиск и удаление данных в XML-файле с помощью XML DOM

<job id="PhoneBook">

<runtime>

<description>

Имя: FindAndDelRecord.wsf

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

Фишер. По следу зверя. Настоящая история серийного убийцы

Рогоза Александр
Реальные истории
Документальная литература:
истории из жизни
биографии и мемуары
5.00
рейтинг книги
Фишер. По следу зверя. Настоящая история серийного убийцы

Неправильный лекарь. Том 1

Измайлов Сергей
1. Неправильный лекарь
Фантастика:
городское фэнтези
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Неправильный лекарь. Том 1

Я все еще не князь. Книга XV

Дрейк Сириус
15. Дорогой барон!
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Я все еще не князь. Книга XV

Темный мир

Алмазов Игорь
6. Жизнь Лекаря с нуля
Фантастика:
альтернативная история
аниме
попаданцы
5.00
рейтинг книги
Темный мир

Герой

Мазин Александр Владимирович
4. Варяг
Фантастика:
альтернативная история
9.10
рейтинг книги
Герой

Барон не играет по правилам

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

Адвокат Империи 2

Карелин Сергей Витальевич
2. Адвокат империи
Фантастика:
городское фэнтези
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Адвокат Империи 2

Ермак. Телохранитель

Валериев Игорь
2. Ермак
Фантастика:
альтернативная история
7.50
рейтинг книги
Ермак. Телохранитель

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

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

Третий. Том 2

INDIGO
2. Отпуск
Фантастика:
космическая фантастика
попаданцы
5.00
рейтинг книги
Третий. Том 2

Великий род

Сай Ярослав
3. Медорфенов
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Великий род

Сотник

Вязовский Алексей
2. Индийский поход
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Сотник

Рассвет русского царства 3

Грехов Тимофей
3. Новая Русь
Фантастика:
историческое фэнтези
альтернативная история
5.00
рейтинг книги
Рассвет русского царства 3

Двойник Короля 4

Скабер Артемий
4. Двойник Короля
Фантастика:
аниме
фэнтези
фантастика: прочее
попаданцы
5.00
рейтинг книги
Двойник Короля 4