Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Доступ и отображение значений атрибутов в XML-документе
Атрибут, который содержится в XML-элементе, представляется дочерним узлом Attribute. Однако вы не сможете обратиться к дочернему узлу Attribute с использованием свойств childNodes , firstChild или lastChild, которые годятся для доступа к дочерним узлам других типов. Вместо этого вам потребуется воспользоваться свойством attributes узла Element .
Примечание. DOM использует узлы Attribute для представления не только атрибутов, но и нескольких типов других компонентов XML, которые состоят из пар имя-значение, а именно: - имя и значение в инструкции по обработке (например, version="1.0" в XML-объявлении); - ключевое слово SYSTEM, за которым следует системный литерал в объявлении типа документа, объявлении внешнего примитива, либо в объявлении нотации; - ключевое слово NDATA, за которым следует имя нотации в объявлении не разбираемого примитива.
Возьмем в качестве примера XML-документ из файла Inventory_Attributes.xml. Содержание файла Inventory_Attributes.xml: <?xml version="1.0"?><!-- Имя файла: Inventory_Attributes.xml --><INVENTORY><BOOK Binding="mass market paperback" InStock="yes" Review="***"> <TITLE>The Adventures of Huckleberry Finn</TITLE> <AUTHOR Born="1835">Mark Twain</AUTHOR> <PAGES>298</PAGES> <PRICE>$5.49</PRICE> </BOOK> <BOOK Binding="hardcover" InStock="no"> <TITLE>Leaves of Grass</TITLE> <AUTHOR Born="1819">Walt Whitman</AUTHOR> <PAGES>462</PAGES> <PRICE>$7.75</PRICE> </BOOK> <BOOK Binding="mass market paperback" InStock="yes" Review="****"> <TITLE> The Legend of Sleepy Hollow </TITLE> <AUTHOR> Washington Irving </AUTHOR> <PAGES> 98 </PAGES> <PRICE> $2.95 </PRICE> </BOOK></INVENTORY>
Элементы BOOK в этом документе имеют от двух до трех атрибутов. Следующее выражение в сценарии получает узел для первого элемента BOOK: Document.documentElement.childNodes(0)
В этих и последующих примерах в данном разделе предполагается, что Document содержит узел Document. Свойство attributes данного узла Element предоставляет набор NamedNodeMap узлов Attribute для всех атрибутов, принадлежащих первому элементу BOOK: NamedNodeMap = Document.documentElement.childNodes(0).attributes
Групповой объект NamedNodeMap несколько отличается от группового объекта NodeList, предоставляемого свойством узла childNodes. В таблице 4.7 приведены свойство и несколько полезных методов, предоставляемых объектами NamedNodeMap.
Таблица 4.7. Свойство и некоторые полезные методы, предоставляемы групповым объектом NamedNodeMap
Вы можете воспользоваться свойством length объекта NamedNodeMap и установленным по умолчанию методом item, чтобы перемещаться внутри набора и извлекать отдельные узлы Attribute. Например, следующий фрагмент сценария отображает имя и значение каждого атрибута для первого элемента BOOK рассматриваемого документа: NamedNodeMap = Document.documentElement.childNodes(0).attributes; for (i=0; i<NamedNodeMap.length; ++i) alert ("node name: " + NamedNodeMap(i).nodeName + "\n" + "node value: " + NamedNodeMap(i).nodeValue);
Каждая пара имя-значение отображается в окне сообщения-предупреждения. На рисунке 4.5 показано как оно выглядит.
Рис. 4.5 - Отображение файла html в Internet Explorer
Обратите внимание, что свойство nodeName узла Attribute содержит имя атрибута, в то время как свойство nodeValue содержит значение атрибута.
Примечание. В действительности узел Attribute имеет дочерний узел Text, который содержит значение атрибута. Однако этот узел практически не нужен, поскольку вы легко можете получить значение атрибута из свойства nodeValue узла Attribute. В связи с этим данный тип дочернего узла Text в этой лекции не рассматривается. Вы можете извлечь определенный узел Attribute из объекта NamedNodeMap, вызвав метод getNamedItem данного объекта. Например, следующий фрагмент кода сценария отображает значение атрибута Binding первого элемента BOOK в рассматриваемом документе: NamedNodeMap = Document.documentElement.childNodes(0). attributes; alert (NamedNodeMap.getNamedItem("Binding").nodeValue);
На рисунке 4.6 показано как выглядит предупреждающее сообщение.
Рис. 4.6 - Предупреждающее сообщение в Internet Explorer
|
Последнее изменение этой страницы: 2019-05-08; Просмотров: 276; Нарушение авторского права страницы