Чтение онлайн

на главную - закладки

Жанры

Windows Script Host для Windows 2000/XP

Попов Андрей Викторович

Шрифт:

Пример сценария

С помощью приведенного ниже сценария SortNameMSXML.js все записи из book.xml сортируются по фамилии и отображаются в Блокноте. Напомним, что аналогичную задачу для текстового файла с разделителями book.txt реализует сценарий SortName.js, приведенный в листинге 5.21. Алгоритм работы сценария SortNameMSXML.js, как и SortName.js, сводится к следующим основным шагам.

1. Информация из файла book.xml считывается в массив

PersonArr
. Каждый элемент массива является экземпляром объекта
Person
,
в котором хранятся все данные для одного человека.

2. Массив

PersonArr
сортируется по возрастанию фамилий.

3. Содержимое всех записей из массива

PersonArr
выводится в текстовый файл out.txt.

4. Файл out.txt открывается в Блокноте.

Таким образом, специфика работы с XML-файлом проявляется лишь при считывании данных из файла book.xml в массив

PersonArr
. Для этого используется функция
FileToArray
. Сначала в этой функции создается пустой массив
PersonArr
и экземпляр
XML
объекта
XML Document
:

PersonArr=new Array;

XML=WScript.CreateObject("MSXML");

В свойство

url
объекта
XML
записывается путь к файлу book.xml, который хранится в переменной
PathBook
:

XML.url=PathBook;

Далее в функции

FileToArray
о определяется количество элементов
<Person>
, т.е. количество записей в книжке (переменная
NomRec
):

NamRec=XML.root.children.item("Person").length;

В цикле

for
происходит перебор всех элементов
<Person>
, которые являются элементами соответствующей коллекции:

//Перебираем коллекцию XML-элементов Person

for (i=0; i<NomRec; i++) {

 //Выделяем в коллекции XML-элементов i-й элемент Person

 XItem=XML.root.children.item("Person", i);

 //Добавляем новый элемент, в массив объектов Person

 PersonToArray(XItem);

}

Как мы видим, каждый элемент

<Person>
передается в качестве аргумента в функцию
PersonToArray(XItem)
, в которой создается новый экземпляр
PersonRec
объекта
Person
, заполняются поля этого объекта и происходит добавление
PersonRec
в массив
PersonArr
:

function PersonToArray(XItem) {

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

 PersonRec=new Person;

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

 PersonRec.LastName=GetTagVal(XItem,"LastName");

 PersonRec.Name=GetTagVal(XItem,"Name");

 PersonRec.Phone=GetTagVal(XItem,"Phone");

 PersonRec.Street=GetTagVal(XItem,"Street");

 PersonRec.House=GetTagVal(XItem,"House");

 PersonRec.App=GetTagVal(XItem,"App");

 PersonRec.Note=GetTagVal(XItem,"Note");

 //Сохраняем объект PersonRec в массиве

 PersonArr[PersonArr.length]=PersonRec;

}

Поля объекта

PersonRec
заполняются с помощью функции
GetTagVal(obj, tgName)
, которая возвращает значение дочернего для элемента
obj
элемента с именем
tgName
:

function GetTagVal(obj, tgName) {

 //Возвращаем значение тега tgName

 return obj.Children.Item(tgName,0).Text;

}

В листинге 6.3 приводится полный текст сценария SortNameMSXMLjs. 

Листинг 6.3. Чтение данных из XML-файла с помощью объектной модели Internet Explorer 4.0

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

/* Имя: SortNameMSXML.js */

/* Язык: JScript */

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

/* Вывод всех записей с сортировкой по фамилии с */

/* помощью объектной модели Internet Explorer 4.0 */

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

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

var

 WshShell,FSO,

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

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

 PathOut, //Путь к выходному файлу

 FBook, //Файл с данными

 FOut, //Выходной файл

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

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

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

 ForWriting=2; //Константа для создания выходного файла

Поделиться:
Популярные книги

Эволюционер из трущоб. Том 4

Панарин Антон
4. Эволюционер из трущоб
Фантастика:
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Эволюционер из трущоб. Том 4

Как я строил магическую империю 6

Зубов Константин
6. Как я строил магическую империю
Фантастика:
попаданцы
аниме
фантастика: прочее
фэнтези
5.00
рейтинг книги
Как я строил магическую империю 6

Заход. Солнцев. Книга XII

Скабер Артемий
12. Голос Бога
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Заход. Солнцев. Книга XII

Газлайтер. Том 3

Володин Григорий
3. История Телепата
Фантастика:
попаданцы
альтернативная история
аниме
5.00
рейтинг книги
Газлайтер. Том 3

Кодекс Охотника. Книга XV

Винокуров Юрий
15. Кодекс Охотника
Фантастика:
попаданцы
аниме
5.00
рейтинг книги
Кодекс Охотника. Книга XV

Наследник старого рода

Шелег Дмитрий Витальевич
1. Живой лёд
Фантастика:
фэнтези
8.19
рейтинг книги
Наследник старого рода

Черный Маг Императора 17

Герда Александр
17. Черный маг императора
Фантастика:
юмористическое фэнтези
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Черный Маг Императора 17

Ты - наша

Зайцева Мария
1. Наша
Любовные романы:
современные любовные романы
эро литература
5.00
рейтинг книги
Ты - наша

Неудержимый. Книга XXVI

Боярский Андрей
26. Неудержимый
Фантастика:
фэнтези
попаданцы
5.00
рейтинг книги
Неудержимый. Книга XXVI

Тринадцатый X

NikL
10. Видящий смерть
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Тринадцатый X

Страж. Тетралогия

Пехов Алексей Юрьевич
Страж
Фантастика:
фэнтези
9.11
рейтинг книги
Страж. Тетралогия

Вперед в прошлое!

Ратманов Денис
1. Вперед в прошлое
Фантастика:
попаданцы
5.00
рейтинг книги
Вперед в прошлое!

Личный аптекарь императора. Том 3

Карелин Сергей Витальевич
3. Личный аптекарь императора
Фантастика:
городское фэнтези
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Личный аптекарь императора. Том 3

Черный Маг Императора 7 (CИ)

Герда Александр
7. Черный маг императора
Фантастика:
фэнтези
попаданцы
5.00
рейтинг книги
Черный Маг Императора 7 (CИ)