Выбрать главу

 InitPath();

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

 FSO=WScript.CreateObject("Scripting.FileSystemObject");

 //Открываем выходной файл для записи

 FOut=FSO.OpenTextFile(PathOut,ForWriting,true);

 //Печатаем заголовок отчета

 TopReport("Сортировка по фамилии");

 //Выводим содержимого файла с данными

 ListFile();

 //Печатаем итоговую информацию

 BottomReport("Всего записей: "+PersonArr.length);

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

 MakeOut();

}

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

Main();

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

Добавление информации в записную книжку

В принципе можно добавлять информацию в записную книжку, просто записывая строки с соответствующими тегами в текстовый файл book.xml. Однако лучше для этой цели воспользоваться специальными методами XML DOM (в этом случае не нужно, например, заботиться о закрывающих тегах).

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

<Person>

 <LastName>Сидоров</LastName>

 <Name>Aнтон</Name>

 <Phone>18-18-18</Phone>

 <Strееt>Саранская</Street>

 <House>12</House>

 <App>4</App>

 <Note>Запись добавлена из сценария</Note>

</Person>

Процесс добавления записи в книжку осуществляется в функции AddRecord(). Здесь сначала заполняются нужными значениями поля объекта PersonRec (функция MakePersonRec()), а затем данные из PersonRec добавляются в файл book.xml (функция RecordToFile(PersonRec)):

function AddRecord() {

 //Заполняем поля объекта PersonRec

 MakePersonRec();

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

 RecordToFile(PersonRec);

}

Итак, наиболее важной в сценарии является функция RecordToFile(PersonRec). В этой функции сначала создается экземпляр XMLDoc объекта DOMDocument и с помощью метода load загружается файл book.xmclass="underline"

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

XMLDoc.load(PathBook);

Указатель на корневой элемент сохраняется в переменной Root:

Root=XMLDoc.documentElement;

После этого с помощью метода createElement создается новый элемент Person, который затем добавляется в book.xml (метод appendChild):

//Создаем XML-элемент Person

NewElem=XMLDoc.createElement("Person");

//Добавляем новый элемент в XML-файл

Root.appendChild(NewElem);

Другие добавляемые элементы (LastName, Name, Phone, Street, House, App и Note) должны быть дочерними относительно элемента Person, поэтому в переменной Root мы сохраним ссылку на последний добавленный элемент Person:

Root=Root.lastChild;

Все элементы добавляются с помощью вызовов методов createElement и appendChild, например:

//Создаем элемент LastName

NewElem=XMLDoc.createElement("LastName");

//Добавляем новый элемент в XML-файл (внутри элемента Person)

Root.appendChild(NewElem);

Содержимое добавляемых элементов (свойство text) берется из соответствующих полей объекта PersRec, например:

//Подставляем в качестве содержимого элемента LastName

//значение поля LastName объекта PersRec

Root.lastChild.text=PersRec.LastName;

После того как все нужные элементы добавлены, измененный файл book.xml с помощью метода save сохраняется на жестком диске:

XMLDoc.save(PathBook);

Полный текст сценария AddRecord.js приводится в листинге 6.5.

Листинг 6.5. Добавление данных в XML-файл с помощью XML DOM

/*******************************************************************/

/* Имя: AddRecord.js                                               */

/* Язык: JScript                                                   */

/* Описание: Записная книжка (данные в XML-файле book.xml).        */

/*           Вставка новых элементов в XML-файл                    */

/*******************************************************************/

//Объявляем переменные

var

 WshShell,

 BasePath,  //Путь к текущему каталогу

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

 XMLDoc,    //XML-файл с данными

 NomRec=0,  //Счетчик количества записей

 PersonRec, //Объект для хранения данных об одном человеке

 PersonArr; //Массив для хранения объектов PersonRec