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

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

Жанры

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
рейтинг книги
Сама себе хозяйка

Сердце Дракона. Том 11

Клеванский Кирилл Сергеевич
11. Сердце дракона
Фантастика:
фэнтези
героическая фантастика
боевая фантастика
6.50
рейтинг книги
Сердце Дракона. Том 11

Первый среди равных. Книга IV

Бор Жорж
4. Первый среди Равных
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Первый среди равных. Книга IV

Неучтенный. Дилогия

Муравьёв Константин Николаевич
Неучтенный
Фантастика:
боевая фантастика
попаданцы
7.98
рейтинг книги
Неучтенный. Дилогия

Мастер Разума IV

Кронос Александр
4. Мастер Разума
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Мастер Разума IV

Авиатор: назад в СССР

Дорин Михаил
1. Авиатор
Фантастика:
попаданцы
альтернативная история
5.25
рейтинг книги
Авиатор: назад в СССР

Кадры решают все

Злотников Роман Валерьевич
2. Элита элит
Фантастика:
боевая фантастика
попаданцы
альтернативная история
8.09
рейтинг книги
Кадры решают все

Плеяда

Суконкин Алексей
Проза:
военная проза
русская классическая проза
5.00
рейтинг книги
Плеяда

Потусторонний. Книга 2

Погуляй Юрий Александрович
2. Господин Артемьев
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Потусторонний. Книга 2

Ученик. Книга 4

Первухин Андрей Евгеньевич
4. Ученик
Фантастика:
фэнтези
5.67
рейтинг книги
Ученик. Книга 4

Законник Российской Империи. Том 3

Ткачев Андрей Юрьевич
3. Словом и делом
Фантастика:
городское фэнтези
альтернативная история
аниме
дорама
5.00
рейтинг книги
Законник Российской Империи. Том 3

Ваше Сиятельство 7

Моури Эрли
7. Ваше Сиятельство
Фантастика:
боевая фантастика
аниме
5.00
рейтинг книги
Ваше Сиятельство 7

Война

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

Младший сын князя. Том 4

Ткачев Андрей Юрьевич
4. Аналитик
Фантастика:
фэнтези
аниме
5.00
рейтинг книги
Младший сын князя. Том 4