Главная Обратная связь

Дисциплины:

Архитектура (936)
Биология (6393)
География (744)
История (25)
Компьютеры (1497)
Кулинария (2184)
Культура (3938)
Литература (5778)
Математика (5918)
Медицина (9278)
Механика (2776)
Образование (13883)
Политика (26404)
Правоведение (321)
Психология (56518)
Религия (1833)
Социология (23400)
Спорт (2350)
Строительство (17942)
Технология (5741)
Транспорт (14634)
Физика (1043)
Философия (440)
Финансы (17336)
Химия (4931)
Экология (6055)
Экономика (9200)
Электроника (7621)


 

 

 

 



Доступ и отображение значений атрибутов в XML-документе



 

Атрибут, который содержится в XML-элементе, представляется дочерним узлом Attribute. Однако нельзя обратиться к дочернему узлу Attribute с использованием свойств childNodes, firstChild или lastChild, которые годятся для доступа к дочерним узлам других типов. Вместо этого потребуется воспользоваться свойством attributes узла Element.

DOM использует узлы Attribute для представления не только атрибутов, но и нескольких типов других компонентов XML, которые состоят из пар имя-значение, а именно:

· имя и значение в инструкции по обработке (например, version="1.0" в XML-объявлении);

· ключевое слово SYSTEM, за которым следует системный литерал в объявлении типа документа, объявлении внешнего примитива, либо в объявлении нотации;

· ключевое слово NDATA, за которым следует имя нотации в объявлении не разбираемого примитива.

Возьмем в качестве примера XML-документ из Листинга 1.30.

 

<?xml version=”1.0”?>

<!-- Имя файла: Inventory07.xml -->

<INVENTORY>

<BOOK Binding=”Жёсткая обложка” InStock=”да” Review=”***”>

<TITLE>Война и мир</TITLE>

<AUTHOR>Лев Толстой</AUTHOR>

<PAGES>510</PAGES>

<PRICE>12 000 рублей</PRICE>

</BOOK>

<BOOK Binding=”Мягкая обложка” ” InStock=”нет”>

<TITLE>Преступление и наказание</TITLE>

<AUTHOR>Фёдор Достоевский</AUTHOR>

<PAGES>590</PAGES>

<PRICE>14 000 рублей</PRICE>

</BOOK>

<BOOK Binding=”Мягкая обложка” InStock=”да” Review=”****”>

<TITLE>Королева Марго</TITLE>

<AUTHOR>Александр Дюма</AUTHOR>

<PAGES>410</PAGES>

<PRICE>10 000 рублей</PRICE>

</BOOK>

</INVENTORY>

Листинг 1.30

 

Элементы BOOK в этом документе имеют от двух до трех атрибутов. Следующее выражение в сценарии получает узел для первого элемента BOOK:

Document.documentElement.childNodes(0)

 

(В этих и последующих примерах в данном разделе предполагается, что Document содержит узел Document.)

Свойство attributes данного узла Element предоставляет набор NamedNodeMap узлов Attribute для всех атрибутов, принадлежащих первому элементу BOOK:

 

NamedNodeMap = Document.documentElement.chikJNodes(0).attributes

 

Групповой объект NamedNodeMap несколько отличается от группового объекта NodeList, предоставляемого свойством узла childNodes. В таблице 5.26 приведены свойство и несколько полезных методов, предоставляемых объектами NamedNodeMap.

Таблица 5.26

Свойство и некоторые полезные методы, предоставляемые групповым объектом NamedNodeMap. Свойство attributes узла предоставляет объект NamedNodeMap

Свойство NamedNodeMap
Свойство Описание Пример
length Количество узлов, содержащихся в наборе AttributeCount = Element.attributes.length;
Метод NamedNodeMap
Метод Описание Пример
getNamed-Item(имя-атр) Возвращает узел, который носит заданное имя Attribute = Element.attributes.getNamed-Item("Binding");
item (индекс, отсчитываемый от нуля) (метод по умолчанию) Возвращает узел в заданной индексом позиции (0 соответствует первому узлу) SecondAttribute = Element.attributes.item(1); или SecondAttribute = Element-attributes(1);
reset() Устанавливает внутренний указатель на позицию перед первым узлом в наборе, так что последующий вызов nextNode возвращает первый узел Element.attributes.reset();
nextNode() Возвращает следующий узел в наборе в соответствии со значением внутреннего указателя Element.attributes.reset(); FirstAttribute = Element.attributes.nextNode();

 

Можно воспользоваться свойством length объекта NamedNodeMap и установленным по умолчанию методом item, чтобы перемещаться внутри набора и извлекать отдельные узлы Attribute. Например, следующий фрагмент сценария отображает имя и значение каждого атрибута для первого элемента BOOK рассматриваемого документа:

 

NamedNodeMap = Document.documentElement.childNodes(0).attributes;

for (I = 0; i < NamedNodeMap.length; ++i)

alert ("имя узла:" + NamedNodeMap(i).nodeName + "\n"

+ "значение узла:" + NamedNodeMap(i).nodeValue);

 

Каждая пара имя-значение отображается в окне сообщения-предупреждения. На следующем рисунке показано, как оно выглядит.

Рисунок 50. Отображение имени и значения узла

 

Обратите внимание, что свойство nodeName узла Attribute содержит имя атрибута, в то время как свойство nodeValue содержит значение атрибута. В действительности узел Attribute имеет дочерний узел Text, который содержит значение атрибута. Однако этот узел практически не нужен, поскольку можно легко получить значение атрибута из свойства nodeValue узла Attribute. В связи с этим тип дочернего узла Text в этой главе не рассматривается.

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

NamedNodeMap = Document.documentElement.childNodes(0).attributes;

alert (NamedNodeMap.getNamedItem("Binding").nodeValue);

 

На следующем рисунке показано, как выглядит предупреждающее сообщение.

Рисунок 51. Отображение значения атрибута

 



Просмотров 1177

Эта страница нарушает авторские права




allrefrs.su - 2025 год. Все права принадлежат их авторам!