Root.appendChild(NewElem);
//Подставляем в качестве содержимого элемента Street
//значение поля Street объекта PersRec
Root.lastChild.text=PersRec.Street;
//Создаем элемент House
NewElem=XMLDoc.createElement('House');
//Добавляем новый элемент в XML-файл (внутри элемента Person)
Root.appendChild(NewElem);
//Подставляем в качестве содержимого элемента House
//значение поля House объекта PersRec
Root.lastChild.text=PersRec.House;
//Создаем элемент App
NewElem=XMLDoc.createElement('App');
//Добавляем новый элемент в XML-файл (внутри элемента Person)
Root.appendChild(NewElem);
//Подставляем в качестве содержимого элемента App
//значение поля House объекта PersRec
Root.lastChild.text=PersRec.App;
//Создаем элемент Note
NewElem=XMLDoc.createElement('Note');
//Добавляем новый элемент в XML-файл (внутри элемента Person)
Root.appendChild(NewElem);
//Подставляем в качестве содержимого элемента App
//значение поля House объекта PersRec
Root.lastChild.text=PersRec.Note;
//Сохраняем содержимое XML-файла на диске
XMLDoc.save(PathBook);
}
//Добавление новой записи в книжку
function AddRecord() {
//Заполняем поля объекта PersonRec
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('Добавить запись в
'+PathBook+'?', 0,
'Работа с XML-файлом', vbQuestion+vbYesNo);
if (Res==vbYes) { //Нажата кнопка Да
//Добавляем новую запись в книжку
AddRecord();
//Выводим информацию на экран
WshShell.Popup('Новая запись
'+PersonRec.LastName+' '+
PersonRec.Name+'
'+PersonRec.Phone+'
'+
PersonRec.Street+', '+PersonRec.House+'-'+PersonRec.App+'
'+
'добавлена в файл '+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
. Все найденные элементы помещаются в коллекцию