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

ЖАНРЫ

Windows Script Host для Windows 2000/XP

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

Шрифт:

Таблица 6.6. Методы объекта

XMLDOMNode

Название Описание
appendChild(NewElem)
Добавляет новый элемент
NewElem
в качестве последнего дочернего элемента. В качестве результата возвращает ссылку на добавленный узел
cloneNode(deep)
Создает новый узел, который является точной копией текущего узла. Параметр
deep
это логическая константа, которая указывает, нужно ли при создании нового узла копировать дочерние узлы текущего элемента
(deep=true)
, либо этого делать не следует
(deep=true)
hasChildNodes
Возвращает
true
, если у узла есть дочерние элементы. В противном случае возвращает
false
removeChild(OldElem)
Удаляет дочерний элемент, ссылка на который содержится в параметре
OldElem
replaceChild(OldElem, NewElem)
Заменяет элемент, ссылка на который содержится в параметре
OldElem
, на элемент, ссылка на который содержится в параметре
NewElem
selectNodes(patternString)
Производит поиск дочерних элементов, содержимое которых удовлетворяет шаблону поиска
patternString
. В результате возвращает объект
XMLDOMNodeList
, содержащий коллекцию всех найденных узлов
selectSingleNode(patternString)
Производит поиск первого дочернего элемента, содержимое которого удовлетворяет шаблону поиска
patternString
. В случае удачного поиска возвращает ссылку на найденный элемент, в противном случае возвращает
Null
 

Просмотр содержимого записной книжки

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

GetTagVal(obj, tgName)
,
PersonToArray(XNode)
и
FileToArray
. Сценарий, который получится в результате этих изменений, назовем SortNameXMLDOM.js.

В функции

FileToArray
сначала создается пустой массив
PersonArr
и экземпляр
XML
объекта
DOMDocument
:

PersonArr=new Array;

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

Для загрузки содержимого файла book.xml (путь к этому файлу хранится в переменной

PathBook
) в объект xml, используется метод
load
:

XML.load(PathBook);

Указатель на корневой элемент записывается в переменную

Root
с помощью свойства
documentElement
объекта
XML
:

Root=XML.documentElement;

После этого нам остается в цикле перебрать все элементы

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; //Телефон

Поделиться с друзьями: