Полный набор свойств и методов этих трех объектов мы рассматривать не будем; в табл. 6.2 и 6.3 приведено описание нескольких основных свойств объектов XML Document
и XML Element
, некоторые из них понадобятся нам в дальнейшем при составлении сценария на языке JScript для просмотра записной книжки.
Таблица 6.2.Свойства объекта XML Document
Свойство |
Описание |
URL |
Задает или возвращает путь к обрабатываемому документу |
root |
Содержит корневой элемент XML-документа, Свойство доступно только для чтения |
charset |
Возвращает или устанавливает название текущей кодировочной таблицы |
version |
Содержит номер версии XML. Свойство доступно только для чтения |
Таблица 6.3.Свойства объекта XML Element
Свойство |
Описание |
children |
Содержит коллекцию дочерних элементов |
tagName |
Содержит имя тега. Свойство доступно для чтения и записи |
text |
Возвращает текстовое содержимое элементов и комментариев |
parent |
Возвращает указатель на родительский элемент. Ссылки на родительский элемент имеют все элементы, за исключением корневого |
type |
Возвращает тип элемента: 0 — элемент, 1 — текст, 2 — комментарий, 3 — Document, 4 — DTD |
С помощью приведенного ниже сценария 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
о определяется количество элементов , т.е. количество записей в книжке (переменная NomRec
):
NamRec=XML.root.children.item("Person").length;
В цикле for
происходит перебор всех элементов , которые являются элементами соответствующей коллекции:
//Перебираем коллекцию XML-элементов Person
for (i=0; i
//Выделяем в коллекции XML-элементов i-й элемент Person
XItem=XML.root.children.item("Person", i);
//Добавляем новый элемент, в массив объектов Person
PersonToArray(XItem);
}
Как мы видим, каждый элемент передается в качестве аргумента в функцию 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). */
Читать дальше