replaceChild( | Заменяет элемент, ссылка на который содержится в параметре OldElemNewElem |
selectNodes( | Производит поиск дочерних элементов, содержимое которых удовлетворяет шаблону поиска patternStringXMLDOMNodeList, содержащий коллекцию всех найденных узлов |
selectSingleNode( | Производит поиск первого дочернего элемента, содержимое которого удовлетворяет шаблону поиска . В случае удачного поиска возвращает ссылку на найденный элемент, в противном случае возвращает Null |
Просмотр содержимого записной книжки
Для того чтобы использовать схему XML DOM в сценарии SortNameMSXML.js, осуществляющем вывод информации из XML-файла book.xml в Блокнот, нужно внести изменения в три функции: GetTagVal (, PersonToArray( и 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( в 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, используется метод 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.
/*******************************************************************/
/* Имя: SortNameXMLDOM.js */
/* Язык: JScript */
/* Описание: Записная книжка (данные в XML-файле book.xml). */
/* Вывод всех записей с сортировкой по фамилии с */
/* помощью объектной модели XML DOM */
/*******************************************************************/
//Объявляем переменные
var
WshShell,FSO,
BasePath, //Путь к текущему каталогу
PathBook, //Путь к файлу с данными
