Windows Script Host для Windows 2000/XP
Шрифт:
После этого нам остается в цикле перебрать все элементы
Person
(для корневого элемента они являются дочерними элементами первого уровня вложенности) и для каждого из них вызвать функцию PersonToArray
: for (i=1; i<=Root.childNodes.length-1; i++) {
//Выделяем в коллекции XML-элементов i-й элемент
//первого уровня вложенности
CurrNode=Root.childNodes.item(i);
//Добавляем новый элемент в массив объектов Person
PersonToArray(CurrNode);
}
Функция
PersonToArray(XNode)
в SortNameXMLDOM.js имеет тот же вид, что и в сценарии SortNameMSXML.js: function PersonToArray(XNode) {
//Создаем новый экземпляр PersonRec объекта Person
PersonRec=new Person;
//Заполняем поля объекта PersonRec
PersonRec.LastName=GetTagVal(XNode,"LastName");
PersonRec.Name=GetTagVal(XNode,"Name");
PersonRec.Phone=GetTagVal(XNode,"Phone");
PersonRec.Street=GetTagVal(XNode,"Street");
PersonRec.House=GetTagVal(XNode,"House");
PersonRec.App=GetTagVal(XNode,"App");
PersonRec.Note=GetTagVal(XNode,"Note");
//Сохраняем объект PersonRec в массиве
PersonArr[PersonArr.length]=PersonRec;
}
Здесь для построения функции
GetTagVal(obj, tgName)
, которая возвращает значение дочернего для элемента obj
элемента с именем tgName
, используется метод getElementsByTagName
, возвращающий коллекцию дочерних элементов с заданным именем: function GetTagVal(obj, tgName) {
var ElemList;
//Создаем коллекцию дочерних для obj элементов, которые
//задаются тегом tgName
ElemList=obj.getElementsByTagName(tgName);
//Проверяем, есть ли в коллекции ElemList элементы
if (ElemList.length>0)
//Возвращаем значение первого встретившегося элемента tgName
return ElemList.item(0).text
else return "";
}
В листинге 6.4 приводится полный текст сценария SortNameXMLDOM.js.
Листинг 6.4. Чтение данных из XML-файла с помощью XML DOM
/*******************************************************************/
/* Имя: SortNameXMLDOM.js */
/* Язык: JScript */
/* Описание: Записная книжка (данные в XML-файле book.xml). */
/* Вывод всех записей с сортировкой по фамилии с */
/* помощью объектной модели XML DOM */
/*******************************************************************/
//Объявляем переменные
var
WshShell,FSO,
BasePath, //Путь к текущему каталогу
PathBook, //Путь к файлу с данными
PathOut, //Путь к выходному файлу
FBook, //Файл с данными
FOut, //Выходной файл
NomRec=0, //Счетчик количества записей
PersonRec, //Объект для хранения данных об одном человеке
PersonArr; //Массив для хранения объектов PersonRec
ForWriting=2; //Константа для создания выходного файла
//Конструктор объекта 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; //Примечание
}
//Определение значения тега tgName XML-элемента obj
function GetTagVal(obj, tgName) {
var ElemList;
//Создаем коллекцию дочерних для obj элементов, которые
//задаются тегом tgName
ElemList=obj.getElementsByTagName(tgName);
//Проверяем, есть ли в коллекции ElemList элементы
if (ElemList.length>0)
//Возвращаем значение первого встретившегося элемента tgName
return ElemList.item(0).text
else return "";
}
//Заполнение нового элемента массива
function PersonToArray(XNode) {
//Создаем новый экземпляр PersonRec объекта Person
Поделиться:
Популярные книги
Кодекс Крови. Книга II
2. РОС: Кодекс Крови
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Портрет дьявола: Собрание мистических рассказов
Проза:
классическая проза
8.09
рейтинг книги
Форма жизни
Фантастика:
боевая фантастика
киберпанк
7.62
рейтинг книги
"Искажающие реальность" Компиляция. Книги 1-14
Искажающие реальность
Фантастика:
боевая фантастика
космическая фантастика
киберпанк
рпг
5.00
рейтинг книги
Бестужев. Служба Государевой Безопасности. Книга третья
3. Граф Бестужев
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Дважды одаренный. Том VIII
8. Дважды одаренный
Фантастика:
боевая фантастика
альтернативная история
аниме
попаданцы
5.00
рейтинг книги
Катриона
Приключения:
исторические приключения
8.62
рейтинг книги
Ученик
1. Ученик
Фантастика:
фэнтези
6.20
рейтинг книги
Второгодка. Книга 2. Око за око
2. Второгодка
Фантастика:
героическая фантастика
альтернативная история
фэнтези
5.00
рейтинг книги
Отмороженный
1. Отмороженный
Фантастика:
боевая фантастика
рпг
5.00
рейтинг книги
Путь разума. Том 12
12. Путь Разума
Фантастика:
рпг
уся
фэнтези
сянься
5.00
рейтинг книги
Газлайтер. Том 21
21. История Телепата
Фантастика:
боевая фантастика
аниме
попаданцы
5.00
рейтинг книги
Одержимая (авторский сборник)
Фантастика:
фэнтези
научная фантастика
7.80
рейтинг книги
История США от глубокой древности до 1918 года
Популярная наука от Азимова
Научно-образовательная:
история
5.00