Windows Script Host для Windows 2000/XP
Шрифт:
Описание: Записная книжка (данные в XML-файле book.xml).
Поиск и удаление элементов из XML-файла
</description>
</runtime>
<script language="VBScript">
'Функция возвращает фамилию для удаления
Function InputName
'Вводим фамилию в диалоговом окне
InputName = InputBox("Введите фамилию для
удаления:", "Записная книжка")
End Function
</script>
<script language="JScript">
//Объявляем переменные
var
WshShell,
LastName, //Удаляемая фамилия
BasePath, //Путь к текущему каталогу
PathBook, //Путь к файлу с данными
XMLDoc, //XML-файл с данными
NomRec=0, //Счетчик количества записей
PersonRec, //Объект для хранения данных об одном человеке
PersonArr; //Массив для хранения объектов PersonRec
//Инициализируем константы для диалоговых окон
var vbYesNo=4,vbQuestion=32,vbInformation=64,vbYes=6,vbOkOnly=0;
//Поиск фамилии в записной книжке и удаление всех
//реквизитов, относящихся к этой фамилии
function FindAndDelRecord {
var Root,sSelect,i,Parent,NodeList;
//Создаем объект DOMDocument
XMLDoc = WScript.CreateObject("Msxml.DOMDocument");
//Загружаем XML-файл
XMLDoc.load(PathBook);
//Сохраняем в переменной Root ссылку на корневой элемент
//документа
Root=XMLDoc.documentElement;
//Формируем строку для поиска фамилии
sSelect="Person/LastName[text='"+LastName+"']";
//Создаем коллекцию NodeList всех элементов LastName,
//значение которых совпадает со значением переменной LastName
NodeList=XMLDoc.documentElement.selectNodes(sSelect);
if (NodeList.length==0) //Коллекция NodeList пуста
//Выводим диалоговое окно с сообщением
WshShell.Popup("Фамилия "+LastName+
" не найдена в записной книжке!",0,
"Работа с XML-файлом",vbInformation+vbOkOnly);
else { //Требуемая фамилия найдена
//Цикл по всем найденным элементам LastName
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-файла на диске
XMLDoc.save(PathBook);
}
}
//Построение путей к файлам
function InitPath {
BasePath=WshShell.CurrentDirectory+"\\";
//Путь к файлу с данными
PathBook=BasePath+"book.xml";
}
//Основная запускная функция
function Main {
var Res;
//Создаем объект WshShell
WshShell = WScript.CreateObject("WScript.Shell");
//Определяем пути к файлам
InitPath;
LastName=InputName;
//Запрос на удаление записи
Res=WshShell.Popup("Удалить фамилию "+LastName+
" из \n"+PathBook+"?",0,
"Работа с XML-файлом",vbQuestion+vbYesNo);
if (Res==vbYes) { //Нажата кнопка Да
//Ищем в книжке нужную фамилию и удаляем относящуюся к
//ней запись
FindAndDelRecord;
}
}
/******************* Начало **********************************/
Main;
/************* Конец *********************************************/
</script>
</job>
Глава 7
Способы организации диалогового режима работы сценариев
В этой главе на примере работы с записной книжкой будут рассмотрены три способа организации из сценария диалога с пользователем.
Во-первых, мы еще раз подробно остановимся на том, как можно использовать параметры командной строки для запуска различных заданий из многозадачного WS-файла, который в нашем случае будет реализовывать несколько функций для работы с записной книжкой.
Поделиться:
Популярные книги
Магия чистых душ 2
Любовные романы:
любовно-фантастические романы
5.56
рейтинг книги
Камень
1. Камень
Фантастика:
боевая фантастика
6.80
рейтинг книги
Прогрессор поневоле
2. Фараон
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Адепт: Обучение. Каникулы [СИ]
6. Совсем не герой
Фантастика:
фэнтези
попаданцы
9.15
рейтинг книги
Газлайтер. Том 4
4. История Телепата
Фантастика:
попаданцы
альтернативная история
аниме
5.00
рейтинг книги
Провинциал. Книга 7
7. Провинциал
Фантастика:
боевая фантастика
космическая фантастика
5.00
рейтинг книги
Назад в СССР 5
5. Курсант
Фантастика:
попаданцы
альтернативная история
6.64
рейтинг книги
Темный Лекарь 3
3. Темный Лекарь
Фантастика:
фэнтези
аниме
5.00
рейтинг книги
Наследник
1. Рюрикова кровь
Фантастика:
научная фантастика
попаданцы
альтернативная история
8.69
рейтинг книги
Долг
7. Другая сторона
Фантастика:
боевая фантастика
5.56
рейтинг книги
Жребий некроманта 2
2. Жребий некроманта
Фантастика:
боевая фантастика
6.87
рейтинг книги
Путь (2 книга - 6 книга)
Путь
Фантастика:
фэнтези
6.40
рейтинг книги
Гром над Империей. Часть 1
5. Гром над миром
Фантастика:
фэнтези
5.20
рейтинг книги
Великий род
3. Медорфенов
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00