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

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

В принципе можно добавлять информацию в записную книжку, просто записывая строки с соответствующими тегами в текстовый файл 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 сохраняется на жестком диске:

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

//Инициализируем константы для диалоговых окон

var vbYesNo=4,vbQuestion=32,vbInformation=64,vbYes=6,vbOkOnly=0;

//Конструктор объекта Person

function Person(LastName,Name,Phone,Street,House,App,Note) {

 this.LastName=LastName; //Фамилия

 this.Name=Name;         //Имя

 this.Phone=Phone;       //Телефон

 this.Street=Street;     //Улица

 this.House=House;       //Дом

 this.App=App;           //Квартира

 this.Note=Note;         //Примечание

}

//Заполнение полей объекта PersonRec

function MakePersonRec() {

 //Создаем экземпляр PersonRec объекта Person

 PersonRec=new Person();

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

 PersonRec.LastName="Сидоров";

 PersonRec.Name="Антон";

 PersonRec.Phone="18-18-18";

 PersonRec.Street="Саранская";

 PersonRec.House="12";

 PersonRec.App="4";

 PersonRec.Note="Запись добавлена из сценария";

}

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

function RecordToFile(PersRec) {

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

 var Root,NewElem,s;

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

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

 //Загружаем XML-файл

 XMLDoc.load(PathBook);

 //Сохраняем в переменной Root ссылку на корневой элемент

 //документа

 Root=XMLDoc.documentElement;

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

 NewElem=XMLDoc.createElement("Person");

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

 Root.appendChild(NewElem);

 //Сохраняем в переменной Root ссылку на последний добавленный

 //элемент Person

 Root=Root.lastChild;

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

 NewElem=XMLDoc.createElement("LastName");

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

 Root.appendChild(NewElem);

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

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

 Root.lastChild.text=PersRec.LastName;

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

 NewElem=XMLDoc.createElement("Name");

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

 Root.appendChild(NewElem);

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

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

 Root.lastChild.text=PersRec.Name;

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

 NewElem=XMLDoc.createElement("Phone");

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

 Root.appendChild(NewElem);

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

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

 Root.lastChild.text=PersRec.Phone;

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

 NewElem=XMLDoc.createElement("Street");

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

 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();

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

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг:

25.4.1. Добавление записей

Из книги автора

25.4.1. Добавление записей Новые и обновленные записи заносятся в базу данных с использованием функции dpput().int dpput(DEPOT * dfepot, const char * key, int keySize, const char * data, int dataSize, int dmode);key представляет собой значение индекса, который впоследствии может использоваться для получения информации,


Добавление ячеек

Из книги автора

Добавление ячеек Иногда к готовой таблице нужно что-то добавить. В этом случае нужно поступить следующим образом.1. Выделите ячейку или диапазон, на место которой нужно поместить дополнительные ячейки.2. В группе Ячейки на вкладке Главная щелкните на стрелке кнопки


Добавление видеофайлов

Из книги автора

Добавление видеофайлов Сначала нужно загрузить в проект видеоматериалы. Можно пополнить проект DVD-Video медиафайлами, полученными из самых различных источников. Для этого нужно щелкнуть кнопкой мыши на пункте Add Video Files (Добавить видеофайлы) и в отобразившемся стандартном


Добавление столбца

Из книги автора

Добавление столбца Один или более столбцов можно добавить в таблицу в одном операторе при использовании предложения ADD. Каждое предложение ADD включает полное определение столбца. Используется тот же самый синтаксис, что и при определении столбца в операторе CREATE TABLE.


Добавление

Из книги автора

Добавление Не существует "дельт" или блокировок для добавления. Если другая транзакция перед этим не выполняла добавления в условиях блокировки на уровне таблицы, добавление всегда будет успешным, если оно не нарушает каких-либо ограничений или проверок


Добавление комментариев

Из книги автора

Добавление комментариев Код хранимой процедуры должен быть комментирован для помощи в отладке и в разработке приложений. Комментарии особенно важны в хранимых процедурах, потому что процедуры являются глобальными в базе данных и могут использоваться несколькими


Добавление

Из книги автора

Добавление Добавление в титр статических изображений и кнопок производится с помощью специальных вкладок редактора титров, и потому рассмотрено отдельно. Сейчас же мы узнаем, как добавить в титр надписи, прямоугольники и эллипсы. Описанные далее операции (выделение,


5.2.3. Добавление элемента к списку, если он в нем отсутствует (добавление без дублирования)

Из книги автора

5.2.3. Добавление элемента к списку, если он в нем отсутствует (добавление без дублирования) Часто требуется добавлять элемент X в список L только в том случае, когда в списке еще нет такого элемента. Если же X уже есть в L, тогда L необходимо оставить без изменения, поскольку


Добавление гиперссылки

Из книги автора

Добавление гиперссылки Объекты можно связывать между собой гиперссылками. При помощи гиперссылок можно открывать файлы, Web-страницы или отдельные страницы блокнота. Для добавления гиперссылки необходимо выполнить следующие действия:1. Перейти на страницу блокнота, с


1.2. Понятие информации. Общая характеристика процессов сбора, передачи, обработки и накопления информации

Из книги автора

1.2. Понятие информации. Общая характеристика процессов сбора, передачи, обработки и накопления информации Вся жизнь человека так или иначе связана с накоплением и обработкой информации, которую он получает из окружающего мира, используя пять органов чувств – зрение,


1.2. Определение количества информации. Единицы измерения количества информации

Из книги автора

1.2. Определение количества информации. Единицы измерения количества информации Как уже отмечалось, понятие информации можно рассматривать при различных ограничениях, накладываемых на ее свойства, т. е. при различных уровнях рассмотрения. В основном выделяют три уровня


Софт: Выбираем записную книжку для Android Николай Маслухин

Из книги автора

Софт: Выбираем записную книжку для Android Николай Маслухин Опубликовано 19 мая 2011 года Во-первых, идеальная записная книжка должна позволять записывать любую информацию, текстовые и голосовые заметки (желательно с удобным виджетом для быстрого


Мошков Максим Что вы все о копирайте, лучше бы книжку почитали (Библиотеке копирайт не враг)

Из книги автора

Мошков Максим Что вы все о копирайте, лучше бы книжку почитали (Библиотеке копирайт не враг) В харчевне не соблюдали ни предписаний, ни обычаев относительно числа блюд и порядка их следования… Юлия Латынина, Сто полей Здесь приводится полный вариант статьи для 300-го


Анализ поправок, принятых Госдумой, к закону «Об информации, информационных технологиях и о защите информации» Сергей Голубицкий

Из книги автора

Анализ поправок, принятых Госдумой, к закону «Об информации, информационных технологиях и о защите информации» Сергей Голубицкий Опубликовано 26 июня 2013 21 июня Государственная Дума РФ приняла сразу во втором и третьем чтении Федеральный Закон «О