Windows Script Host для Windows 2000/XP - Андрей Попов
Шрифт:
Интервал:
Закладка:
В CurrNode=Root.childNodes.item(i);
 //Добавляем новый элемент в массив объектов Person
В PersonToArray(CurrNode);
В }
}
//Запись в выходной файл заголовка отчета
function TopReport(Mess) {
В FOut.WriteLine(Mess);
В FOut.WriteLine("--------------------");
В FOut.WriteLine("");
}
//Запись в выходной файл итоговой информации
function BottomReport(Mess) {
В FOut.WriteLine(Mess);
}
//Запись данных из объекта Person в выходной файл
function PrintPerson(PersRec) {
 FOut.WriteLine("Фамилия: "+PersRec.LastName);
В FOut.WriteLine("РРјСЏ: "+PersRec.Name);
 FOut.WriteLine("Телефон: "+PersRec.Phone);
 FOut.WriteLine("Улица: "+PersRec.Street);
 FOut.WriteLine("Дом: "+PersRec.House);
В FOut.WriteLine("РљРІ.: "+PersRec.App);
 FOut.WriteLine("Заметки: "+PersRec.Note);
В FOut.WriteLine("*********************************");
В NomRec++;
}
//Сортировка массива и вывод его содержимого в выходной файл
function ListPersonArray() {
В var i;
 //Сортировка массива по фамилии
В PersonArr.sort(SortLastName);
 //Цикл по всем элементам массива PersonArr
В for (i=0;i<=PersonArr.length-1;i++) {
 //Запись информации в выходной файл
В PrintPerson(PersonArr[i]);
В }
}
//Функция для сортировки массива по фамилии
function SortLastName(Pers1,Pers2) {
В if (Pers1.LastName<Pers2.LastName) return -1;
В else if (Pers1.LastName==Pers2.LastName) return 0;
В else return 1;
}
//Вывод содержимого файла с данными
function ListFile() {
 //Считывание данных из файла в массив
В FileToArray();
 //Запись информации из массива в выходной файл
В ListPersonArray();
}
//Просмотр содержимого выходного файла в Блокноте
function MakeOut() {
 //Закрываем выходной файл
В FOut.Close();
 //Открываем выходной файл в Блокноте
В WshShell.Run("notepad "+PathOut,1);
}
//Построение путей к файлам
function InitPath() {
В BasePath=WshShell.CurrentDirectory+"\";
 //Путь к файлу с данными
В PathBook=BasePath+"book.xml",
 //Путь к выходному файлу
В PathOut=BasePath+"out.txt";
}
//Основная запускная функция
function Main() {
 //Создаем объект WshShell
В WshShell = WScript.CreateObject("WScript.Shell");
 //Определяем пути к файлам
В 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.xml:
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 сохраняется на жестком диске: