Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Создайте страницу для перемещения между узлами



Откройте новый, пустой текстовый файл в вашем текстовом редакторе и введите HTML-страницу ShowNodes.htm:

 

<!-- Имя файла: ShowNodes.htm --><HTML><HEAD> <TITLE>Show DOM Nodes</TITLE> <SCRIPT LANGUAGE="JavaScript" FOR="window" EVENT="ONLOAD"> /* получить узел Document: */ Document = dsoXML.XMLDocument; /* передача узла Document функции */ DisplayDIV.innerText = DisplayNodes(Document, 0);    function DisplayNodes (Node, IndentLevel) {  /* объявить локальные переменные для рекурсии: */ var i; var DisplayString = "";  /* создание отступа для данного уровня: */ Indent = "";    IndentDelta = " "; for (i=0; i < IndentLevel; ++i)        Indent += IndentDelta;          /* отображение свойств текущего узла: */  DisplayString += Indent + "nodeName: "                     + Node.nodeName + "\n"              + Indent + "nodeTypeType: "                    + Node.nodeType + "\n"              + Indent + "nodeTypeString: "                    + Node.nodeTypeString + "\n"              + Indent + "nodeValue: "                    + Node.nodeValue + "\n\n"; /* отображение атрибутов для каждого из дочерних узлов: */ Indent += IndentDelta; for (i=0;    Node.attributes != null && i < Node.attributes.length;            ++i) DisplayString += Indent + "nodeName: "                  + Node.attributes(i).nodeName + "\n"                + Indent + "nodeTypeType: "                 + Node.attributes(i).nodeType + "\n"           + Indent + "nodeTypeString: "                 + Node.attributes(i).nodeTypeString + "\n"           + Indent + "nodeValue: "                 + Node.attributes(i).nodeValue + "\n\n"; /* отображение каждого из дочерних узлов, не являющихся атрибутами: */  for (i=0; i < Node.childNodes.length; ++i)  DisplayString +=        DisplayNodes (Node.childNodes(i), IndentLevel + 1); /* возврат строки, содержащей результаты: */  return DisplayString;    } </SCRIPT></HEAD><BODY> <XML ID="dsoXML" SRC="Inventory Dom.xml"></XML> <H2> XML Document Object Model (DOM) Nodes </H2> <DIV ID="DisplayDIV"></DIV></BODY></HTML>

 

В начале сценарий передает узел Document функции DisplayNodes, которая возвращает отображаемую информацию данного узла и всех его дочерних узлов. Сценарий присваивает отображаемую информацию свойству innerText элемента DisplayDIV DIV в разделе BODY страницы, который затем отображает эту информацию:

 

DisplayDIV.innerText = DisplayNodes(Document, 0);

 

Второй параметр функции DisplayNodes  задает уровень отступа, используемого при отображении информации узла.

Функция DisplayNodes имеет следующую форму записи:

 

function DisplayNodes (Node, IndentLevel)

 

Функция выполняет следующие основные действия:

Она сохраняет соответствующее количество символов пробелов в переменной Indent, которая используется для создания отступа в начале каждой строки текста узла. Количество символов пробелов определяется значением параметра IndentLevel, передаваемого функции DisplayNodes:

 

/* создание отступа для данного уровня: */ Indent = ""; IndentDelta = " "; for (i=0; i < IndentLevel; ++i); Indent += IndentDelta;

Она сохраняет отображаемую информацию для текущего узла – т. е. узла, передаваемого функции DisplayNodes через параметр Node (изначально, узел Document):

 

/* отображение свойств текущего узла: */ DisplayString += Indent + "nodeName: " + Node.nodeName + "\n" + Indent + "nodeTypeType: " + Node.nodeType + "\n" + Indent + "nodeTypeString: " + Node.nodeTypeString + "\n" + Indent + "nodeValue: " + Node.nodeValue + "\n\n";

Подсказка. Если вы хотите увидеть дополнительные свойства для каждого узла, то можете добавить их в представленный выше фрагмент кода. Вы можете использовать любые общие свойства узла, приведенные в таблице 4.2. Однако не следует использовать специальные свойства, характерные для определенного узла (они приведены в таблице 4.3 для узлов Document), поскольку они применимы не для всех типов узлов.

Она сохраняет отображаемую информацию для дочерних узлов Attribute текущего узла. Отступ при этом увеличивается на один уровень, указывая на то, что эти узлы являются дочерними для текущего узла:

 

/* отображение атрибутов для каждого из дочерних узлов: */ Indent += IndentDelta; for (i=0; Node.attributes != null && i < Node.attributes.length; ++i) DisplayString += Indent + "nodeName: " + Node.attributes(i).nodeName + "\n" + Indent + "nodeTypeType: " + Node.attributes(i).nodeType + "\n" + Indent + "nodeTypeString: " + Node.attributes(i).nodeTypeString + "\n" + Indent + "nodeValue: " + Node.attributes(i).nodeValue + "\n\n";

Примечание. Функция DisplayNodes не отображает дочерний узел Text узла Attribute, поскольку гораздо удобнее получить значение атрибута непосредственно из свойства nodeValue самого узла Attribute.

Функция DisplayNodes сохраняет отображаемую информацию для каждого дочернего узла, не являющегося атрибутом, осуществляя самостоятельный вызов для каждого из этих узлов. Такой вызов называется рекурсивным:

 

/* отображение каждого из дочерних узлов, не являющихся атрибутами: */ for (i=0; i < Node.childNodes.length; ++i) DisplayString += DisplayNodes (Node.childNodes(i), IndentLevel + 1);

Функция DisplayNodes завершает свою работу, возвращая строку, содержащую всю информацию об узле:

 

/* возврат строки, содержащей результаты: */ return DisplayString;

Откройте страницу в Internet Explorer.

Обратите внимание, что свойство nodeTypeString содержит тип узла в виде строчных букв. (Так, "Document" и "ProcessingInstruction" превращаются в "document" и "processinginstruction".)

Изначально страница отображает XML-документ Inventory Dom.xml. Первая часть отображаемых результатов выглядит как показано на рисунке 4.8.

 

 

Рис. 4.8 - Отображение файла ShowNodes.htm в Internet Explorer

 

Чтобы просмотреть структуру узлов для других XML-документов, отредактируйте фрагмент данных страницы. Например, чтобы просмотреть узлы документа Inventory Valid Entity.xml (см. Листинг 6-1), вы должны изменить фрагмент данных следующим образом:


Поделиться:



Последнее изменение этой страницы: 2019-05-08; Просмотров: 227; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.01 с.)
Главная | Случайная страница | Обратная связь