Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Отображение переменного числа XML-элементов
Итак, вы теперь знаете, как отобразить XML-документ, имеющий известное число элементов. Если документ имеет неизвестное число элементов, использование DOM для отображения документа несколько усложняется. Например, для XML-документа типа Inventory.xml или Big . xml вы обычно не знаете заранее, сколько элементов BOOK содержит документ. Если же количество элементов BOOK меняется, необходимо воспользоваться сценарием. В файле Book . xml представлена HTML-страница, которая использует DOM для отображения документа Inventory.xml вне зависимости от того, сколько элементов BOOK в нем содержится. На рисунке 4.3 показано как будет выглядеть страница в Internet Explorer.
Рис. 4.3 – Отображение файла Book.xml в Internet Explorer
Содержание файла DomDemo _ Variable . htm:
<!-- Имя файла: DomDemo_Variable.htm -->
<HTML> <HEAD> <TITLE> Book Inventory </TITLE> <SCRIPT LANGUAGE="JavaScript" FOR="window" EVENT="ONLOAD"> HTMLCode = ""; Document = dsoInventory.XMLDocument; for (i=0; i < Document.documentElement.childNodes.length; i++) { HTMLCode += " <SPAN >Title: </SPAN> " + Document.documentElement.childNodes(i).childNodes(0).text + "<BR>" + "<SPAN >Author: </SPAN>" + Document.documentElement.childNodes(i).childNodes(1).text + "<BR>" + "<SPAN >Number of pages: </SPAN>" + Document.documentElement.childNodes(i).childNodes(2).text + "<BR>" + "<SPAN >Price: </SPAN>" + Document.documentElement.childNodes(i).childNodes(3).text + "<P>"; }DisplayDIV.innerHTML=HTMLCode; </SCRIPT>
</HEAD> <BODY> <XML ID="dsoInventory" SRC="Inventory.xml"></XML> <H2> Book Inventory </H2> <DIV ID="DisplayDIV"></DIV></BODY></HTML>
Сценарий в рассматриваемом примере использует свойство length для определения количества элементов BOOK внутри корневого элемента. Свойство length является членом группового объекта NodeList, предоставляемого свойством childNodes узла корневого элемента. В сценарии имеется цикл for, который выполняется для каждого элемента BOOK и включает код для отображения каждого из этих элементов: for (i=0; i < Document.documentElement.childNodes.length; i++) { /* код для отображения элемента BOOK… */ }
Поскольку количество элементов BOOK неизвестно, страница не может использовать фиксированный набор элементов SPAN в разделе BODY для отображения данных (как это делалось в предыдущем примере в файле Book . xml). Вместо этого для каждого элемента BOOK сценарий динамически генерирует весь блок HTML-разметки, необходимый для отображения элемента: for (i=0; i < Document.documentElement.childNodes.length; i++){HTMLCode += "<SPAN >Title: </SPAN>"+ Document.documentElement.childNodes(i).childNodes(0).text+ "<BR>"+ "<SPAN >Author: </SPAN>"+ Document.documentElement.childNodes(i).childNodes(1).text+ "<BR>"+ "<SPAN >Number of pages: "+ "</SPAN>"+ Document.documentElement.childNodes(i).childNodes(2).text+ "<BR>"+ "<SPAN >Price: </SPAN>"+ Document.documentElement.childNodes(i).childNodes(3).text+ "<P>";}
Сценарий хранит все эти блоки HTML-разметки в переменной HTMLCode. После цикла for, когда все блоки сгенерированы и загружены в HTMLCode, сценарий присваивает HTML-разметку свойству inner HTML элемента DIV раздела BODY страницы (DIV ID="DisplayDIV"):
DisplayDIV.innerHTML=HTMLCode;
Элемент DIV затем сразу же получает HTML-разметку и отображает результаты, которые представлены на рисунке 4.3. Чтобы убедиться, что страница работала независимо от количества элементов BOOK, которое содержится в XML-документе, вы можете отредактировать фрагмент данных на этой странице, чтобы он отображал документ Big.xml, который содержит в два раза больше элементов BOOK, чем документ Inventory.xml:
|
Последнее изменение этой страницы: 2019-05-08; Просмотров: 247; Нарушение авторского права страницы