Что такое код domelement >get_attribute


Содержание

Есть ли способ получить все атрибуты DOMElement?

Я читаю XML-код с PHP и в настоящее время использую класс DOMDocument для этого. Мне нужен способ захватить имена и значения атрибутов тега (экземпляр DOMElement ), не зная заранее, что это такое. документация, похоже, не предлагает ничего подобного. Я знаю, что могу получить значение атрибута, если у меня есть его имя, но опять же, я не знаю ни одного из них, и мне нужно найти оба.

Я также знаю, что другие классы, такие как SimpleXMLElement , обладают этой возможностью, но меня интересует, как это можно сделать с помощью DOMDocument .

Вы можете получить все атрибуты данного DomNode, используя свойство DomNode- > attributes, оно вернет вам DOMNamedNodeMap, содержащий имена и значения атрибутов.

Если вы хотите получить имя атрибута и значения атрибута (а не атрибутыNodes), вам нужно вызвать свойство $attrNode- > nodeValue объекта DOMNode.

Element.getAttribute()

На этой странице

Описание

getAttribute() возвращает значение указанного атрибута элемента. Если элемент не содержит данный атрибут, могут быть возвращены null или «» (пустая строка); подробнее Notes.

Синтаксис

  • attribute — переменная, которой будет присвоено значение attributeName .
  • attributeName — имя атрибута, значение которого необходимо получить.

Пример

Примечания

Когда метод getAttribute вызывается применительно к HTML-элементу, в DOM HTML-документа, значение аргумента приводится к нижнему регистру.

В действительности все браузеры (Firefox, Internet Explorer, последние версии Opera, Safari, Konqueror, iCab и т.д.) возвращают null , когда выбранный элемент не содержит атрибута с переданным именем. Спецификация DOM определяет, что корректное возвращаемое значение в данном случае — пустая строка и некоторые реализации DOM придерживаются такого поведения. Реализация getAttribute в XUL (Gecko) в настоящее время следует спецификации и возвращает пустую строку. Следовательно, имеет смысл использовать hasAttribute, чтобы проверять наличие атрибутов перед вызовом getAttribute() , если может быть такое, что выбранный элемент не будет содержать искомого атрибута.

Методы DOM имеют дело с атрибутами элементов:

Как использовать data-атрибуты HTML5

Давным-давно, во времена XHTML/HTML4 у разработчиков было всего несколько возможностей, которыми они могли пользоваться для того, чтобы хранить произвольные данные, относящиеся к DOM. Вы могли изобретать свои собственные атрибуты, но это было рискованно — ваш код не был бы валидным, браузеры могли игнорировать ваши данные, и это могло вызвать проблемы, если название совпадало со стандартными атрибутами HTML.

Поэтому большинство разработчиков завязывались на атрибуты class или rel так как они были единственным разумным способом хранить дополнительные строки. К примеру, предположим, что мы создаем виджет для отображения сообщений типа временной линии сообщений в Twitter. В идеале JavaScript должен иметь возможность конфигурирования без необходимости переписывать код, так что мы определяем идентификатор пользователя в атрибуте class, например:

Наш JavaScript код будет искать элемент с ID msglist. С помощью скрипта мы будем искать классы, начинающиеся с user_, а “bob” в нашем случае будет идентификатором пользователя, и мы отобразим все сообщения этого пользователя.

Скажем, мы бы хотели также задать максимальное количество сообщений, и пропускать сообщения старше шести месяцев (180 дней):

Наш атрибут class очень быстро загромождается — проще допустить ошибку, а разбор строк на JavaScript становится все сложнее.

Data-атрибуты HTML5

К счастью, в HTML5 была введена возможность использовать пользовательские атрибуты. Вы можете использовать любое имя в нижнем регистре с префиксом data-, например:

  • это строки — в них вы можете хранить любую информацию, которая может быть представлена или закодирована в виде строки, например JSON. Приведение типов должно осуществляться с помощью JavaScript
  • должны использоваться в тех случаях, когда нет подходящих элементов HTML5 или атрибутов
  • относятся только к странице. В отличие от микроформатов они должны игнорироваться внешними системами, типа поисковых систем и поисковых роботов

Пример №1 обработки на JavaScript: getAttribute и setAttribute

Все браузеры позволяют вам получить и изменить data-атрибуты с использованием методов getAttribute и setAttribute:

Это работает, но должно использоваться только для поддержания совместимости со старыми браузерами.

Пример №2 обработки на JavaScript: метод data() библиотеки jQuery

Начиная с версии jQuery 1.4.3 метод data() обрабатывает data-атрибуты HTML5. Вам нет необходимости явно указывать префикс data-, так что подобный код будет работать:

Илон Маск рекомендует:  Архитектура asp net 2 0

Но как бы то ни было, имейте в виду, что jQuery пытается конвертировать значения таких атрибутов в подхдящие типы (булевы значения, числа, объекты, массивы или null) и затронет DOM. В отличие от setAttribute, метод data() физически не заменит атрибут data-list-size — если вы проверите его значение вне jQuery — оно все еще останется равным 5.


Пример №3 обработки на JavaScript: API для работы с наборами данных

И, наконец, у нас есть API для работы с наборами данных HTML5, которое возвращает объект DOMStringMap. Необходимо помнить, что data-атрибуты отображаются в объект без префиксов data-, из названий убираются знаки дефиса, а сами названия конвертируются в camelCase, например:

Имя атрибута Имя в API набора данных
data-user user
data-maxage maxage
data-list-size listSize

Данный API поддерживается всеми современными браузерами, но не IE10 и ниже. Для таких браузеров существует обходной путь, но, наверное, куда практичнее использовать jQuery, если вы пишете для старых браузеров.

Данный урок подготовлен для вас командой сайта ruseller.com
Источник урока: http://www.sitepoint.com/use-html5-data-attributes/
Перевел: Станислав Протасевич
Урок создан: 14 Марта 2014
Просмотров: 59720
Правила перепечатки

5 последних уроков рубрики «HTML5»

Расширяем возможности HTML за счёт создания собственных тегов

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

Определение доступности атрибута HTML5 с помощью JavaScript

Сегодня мы посмотрим, как можно организовать проверку доступности атрибута HTML5 с помощью JavaScript. Проверять будем работу элементов details и summary.

HTML5: API работы с вибрацией

HTML5 — глоток свежего воздуха в современном вебе. Она повлиял не только на классический веб, каким мы знаем его сейчас. HTML5 предоставляет разработчикам ряд API для создания и улучшения сайтов с ориентацией на мобильные устройства. В этой статье мы рассмотрим API для работы с вибрацией.

Создание форм с помощью Webix Framework — 4 практических примера

Веб дизайнеры частенько сталкиваются с необходимостью создания форм. Данная задача не простая, и может вызвать головную боль (особенно если вы делаете что-то не стандартное, к примеру, много-страничную форму). Для упрощения жизни можно воспользоваться фрэймворком. В этой статье я покажу вам несколько практических приёмов для создания форм с помощью фрэймворка Webix.

Знакомство с фрэймворком Webix

В этой статье мы бы хотели познакомить вас с фрэймворком Webix. Для демонстрации возможностей данного инструмента мы создадим интерфейс online аудио плеера. Не обольщайтесь — это всего лишь модель интерфейса. Исходный код доступен в демо и на странице GitHub.

Есть ли способ получить все атрибуты DOMElement?

Я читаю некоторый xml с PHP и в настоящее время использую класс DOMDocument для этого. Мне нужен способ захватить имена и значения атрибутов тега (экземпляр DOMElement ), не зная заранее, что это такое. документация , похоже, не предлагает ничего подобного. Я знаю, что могу получить значение атрибута, если у меня есть его имя, но опять же, я не знаю ни одного из них, и мне нужно найти оба.

Я также знаю, что другие классы, такие как SimpleXMLElement , имеют эту возможность, но меня интересует, как это можно сделать с помощью DOMDocument .

DomElement->get_attribute

DomElement->get_attribute — Returns the value of the given attribute

Описание

Returns the value of the given attribute in the current element.

Since PHP 4.3, if no attribute with given name is found, an empty string is returned.

Список параметров

The name of the seeked attribute. This parameter is case sensitive.

Возвращаемые значения

Returns the name of the attribute as a string or an empty string if no attribute with the given name is found.

Примеры

Пример #1 Getting the value of an attribute

if (! $dom = domxml_open_mem ( $xmlstr )) <
echo «Error while parsing the document\n» ;
exit;
>

// get chapter
$root = $dom -> document_element ();
echo $root -> get_attribute ( ‘language’ ); // en


Тема: DOM

Опции темы

DOM
Объектная модель документа XML — Document Object Model (DOM).

СписокУзловDOM (DOMNodeList)
Элементы коллекции:

АтрибутDOM, ДокументDOM, ЭлементDOM, ОпределениеТипаДокументаDOM, НотацияDOM, СущностьDOM, ФрагментДокументаDOM, ТекстDOM, КомментарийDOM, СекцияCDATADOM, ИнструкцияОбработкиDOM, СсылкаНаСущностьDOM, ПространствоИменXPath
Для объекта доступен обход коллекции посредством оператора Для каждого … Из … Цикл. При обходе выбираются узел DOM.
Возможно обращение к узлам DOM посредством оператора [. ]. В качестве аргумента передается индекс узла DOM (нумерация с 0).
Методы:

Количество (Count)
Элемент (Item)
Описание:

Список узлов DOM.
Доступность:

Тонкий клиент, сервер, толстый клиент, внешнее соединение.

Методы:
СписокУзловDOM.Количество (DOMNodeList.Count)

СписокУзловDOM (DOMNodeList)
Количество (Count)
Синтаксис:

Получает количество элементов списка.
Доступность:

Сервер, толстый клиент, внешнее соединение.

СписокУзловDOM (DOMNodeList)
Элемент (Item)
Синтаксис:

Тип: Число.
Индекс узла DOM в списке.Возвращаемое значение:

Получает узел DOM по индексу.
Доступность:

Сервер, толстый клиент, внешнее соединение.

СписокЭлементовDOM (DOMElementList)
Элементы коллекции:

Илон Маск рекомендует:  Что такое код dbplus_undoprepare

АтрибутDOM, ДокументDOM, ЭлементDOM, ОпределениеТипаДокументаDOM, НотацияDOM, СущностьDOM, ФрагментДокументаDOM, ТекстDOM, КомментарийDOM, СекцияCDATADOM, ИнструкцияОбработкиDOM, СсылкаНаСущностьDOM, ПространствоИменXPath
Для объекта доступен обход коллекции посредством оператора Для каждого … Из … Цикл. При обходе выбираются узел DOM.
Возможно обращение к узлам DOM посредством оператора [. ]. В качестве аргумента передается индекс узла DOM (нумерация с 0).
Методы:

Количество (Count)
Элемент (Item)
Описание:

Список элементов DOM.
Доступность:

Тонкий клиент, сервер, толстый клиент, внешнее соединение.

Методы:
СписокЭлементовDOM.Количество (DOMElementList.Count)

СписокЭлементовDOM (DOMElementList)
Количество (Count)
Синтаксис:

Получает количество элементов списка.
Доступность:

Сервер, толстый клиент, внешнее соединение.

СписокЭлементовDOM (DOMElementList)
Элемент (Item)
Синтаксис:

Тип: Число.
Индекс элемента DOM в списке.Возвращаемое значение:

Получает элемент DOM по индексу.
Доступность:

Сервер, толстый клиент, внешнее соединение.

КоллекцияАтрибутовDOM (DOMAttributeMap)
Элементы коллекции:

АтрибутDOM
Для объекта доступен обход коллекции посредством оператора Для каждого … Из … Цикл. При обходе выбираются атрибуты DOM.
Возможно обращение к атрибуту DOM посредством оператора [. ]. В качестве аргумента передается индекс (нумерация с 0).
Методы:

Количество (Count)
ПолучитьИменованныйЭлемент (GetNamedItem)
УдалитьИменованныйЭлемент (RemoveNamedItem)
УстановитьИменованныйЭлемент (SetNamedItem)
Элемент (Item)
Описание:


Коллекция узлов атрибутов узла DOM.
Доступность:

Тонкий клиент, сервер, толстый клиент, внешнее соединение.

Методы:
КоллекцияАтрибутовDOM.Количество (DOMAttributeMap.Count)

КоллекцияАтрибутовDOM (DOMAttributeMap)
Количество (Count)
Синтаксис:

Получает количество элементов коллекции.
Доступность:

Сервер, толстый клиент, внешнее соединение.

КоллекцияАтрибутовDOM (DOMAttributeMap)
ПолучитьИменованныйЭлемент (GetNamedItem)
Вариант синтаксиса: По имени

Тип: Строка.
Имя узла-атрибута DOM.Вариант синтаксиса: По имени и URI пространства имен

Тип: Строка.
URI пространства имен атрибута DOM. (обязательный)

Тип: Строка.
Локальное имя узла атрибута DOM.Возвращаемое значение:

Возвращает атрибут DOM по указанному имени.
Доступность:

Сервер, толстый клиент, внешнее соединение.

Удаление атрибутов из узла элемента в DOM Removing Attributes from an Element Node in the DOM

Существует много способов удаления атрибутов. There are many ways to remove attributes. Один из них заключается в их удалении из коллекции атрибутов. One technique is to remove them from the attribute collection. Для этого выполняются следующие шаги. To do this, the following steps are performed:

Возвратите коллекцию атрибутов из элемента с помощью кода XmlAttributeCollection attrs = elem.Attributes; . Get the attribute collection from the element using XmlAttributeCollection attrs = elem.Attributes; .

Удалите атрибут из коллекции атрибутов, используя один из трех методов. Remove the attribute from the attribute collection using one of three methods:

Метод Remove удаляет указанный атрибут. Use Remove to remove a specific attribute.

Метод RemoveAll удаляет все атрибуты из коллекции, оставляя элемент без атрибутов. Use RemoveAll to remove all attributes from the collection and leave the element with no attributes.

Метод RemoveAt удаляет атрибут из коллекции, используя его индексный номер. Use RemoveAt to remove an attribute from the attribute collection by using its index number.

Следующие методы удаляют атрибуты из узла элемента. The following methods remove attributes from the element node.

Метод RemoveAllAttributes удаляет коллекцию атрибутов. Use RemoveAllAttributes to remove the attribute collection.

Метод RemoveAttribute удаляет из коллекции один атрибут по заданному имени. Use RemoveAttribute to remove a single attribute by name from the collection.

Метод RemoveAttributeAt удаляет из коллекции один атрибут по индексному номеру. Use RemoveAttributeAt to remove a single attribute by index number from the collection.

Чтобы удалить атрибут, можно также вернуть элемент, вернуть атрибут из коллекции атрибутов и напрямую удалить узел атрибута. One more alternative is to get the element, get the attribute from the attribute collection, and remove the attribute node directly. Чтобы вернуть атрибут из коллекции атрибутов, можно использовать имя XmlAttribute attr = attrs[«attr_name»]; , индекс XmlAttribute attr = attrs[0]; или полное имя, включая пространство имен XmlAttribute attr = attrs[«attr_localName», «attr_namespace»] . To get the attribute from the attribute collection, you can use a name, XmlAttribute attr = attrs[«attr_name»]; , an index XmlAttribute attr = attrs[0]; , or by fully qualifying the name with the namespace XmlAttribute attr = attrs[«attr_localName», «attr_namespace»] .

Независимо от способа удаления атрибута, существуют специальные ограничения на удаление атрибутов, определенные в определении DTD как атрибуты по умолчанию. Regardless of the method used to remove attributes, there are special limitations on removing attributes that are defined as default attributes in the document type definition (DTD). Атрибуты по умолчанию нельзя удалять, если не удален элемент, которому они принадлежат. Default attributes cannot be removed unless the element they belong to is removed. Атрибуты по умолчанию всегда присутствуют в элементах, для которых декларированы атрибуты по умолчанию. Default attributes are always present for elements that have default attributes declared. Удаление атрибута по умолчанию из коллекции XmlAttributeCollection или XmlElement приводит к вставке замещающего атрибута в коллекцию XmlAttributeCollection элемента и инициализации декларированного значения по умолчанию. Removing a default attribute from an XmlAttributeCollection or from the XmlElement results in a replacement attribute inserted into the XmlAttributeCollection of the element, initialized to the default value that was declared. Если существует элемент, определенный как , то существует элемент book с тремя атрибутами, объявленными по умолчанию. If you have an element defined as , then you have a book element with three default attributes declared. Реализация модели XML DOM гарантирует, что, пока существует элемент book , он имеет три атрибута по умолчанию: att1 , att2 и att3 . The XML Document Object Model (DOM) implementation guarantees that as long as this book element exists, it has these three default attributes of att1 , att2 , and att3 .

Илон Маск рекомендует:  Атрибут width в HTML

Взаимодействие PHP и XML

Обход дерева объектов

Для получения значения текущего узла (вне зависимости от его типа) используют метод DomNode->node_value() или DomNode->get_content() для получения содержимого узла.

Для получения значения атрибута используется метод DomElement->get_attribute (attr_name) . А метод DomNode->child_nodes() возвращает массив потомков данного узла.

Для того чтобы сделать обход дерева объектов, полезно еще уметь различать объекты по типам, т.е. определять, является ли узел элементом (тегом), текстом, атрибутом и т.п. Для этого используются специальные константы. XML_ELEMENT_NODE определяет, является ли узел элементом , XML_ATTRIBUTE_NODE определяет, является ли узел атрибутом, и XML_TEXT_NODE определяет, является ли узел куском текста. Эти константы имеют целочисленные значения 1 , 2 и 3 соответственно. Использование этих констант полезно, поскольку переводы строки, применяемые для удобочитаемости XML -файлов, тоже становятся узлами.

Итак, мы научились обходить дерево XML . Теперь можно попытаться что-нибудь найти в XML -файле. Правда, делать это не совсем удобно опять же из-за переносов строк, которые мы использовали при написании XML -файла. Пусть наш XML -файл записан в строку, а точнее, в нем есть следующая строка:

Тогда в наш предыдущий пример вставим (после вывода на экран полученных массивов) строчку для поиска электронного адреса Ивана Иванова.


Добавление новых элементов в XML-документ

Далее разберем задачу, как можно добавить в нашу базу данных новую личность средствами php.

Сначала нужно скопировать описание личности (считаем, что все личности описываются с помощью стандартного набора характеристик, как в файле persons.xml ). Это делается с помощью метода DomNode->clone_node() . Таким образом, мы клонируем элемент

и все его внутренние элементы (содержание тегов не копируется).

Потом можно установить какие-нибудь значения для элементов описания личности. Например, задать имя человека, дату его рождения и т.п. В конце нужно записать полученное описание личности в качестве потомка корневого элемента в дерево DOM с помощью метода DomNode->append_child(new_node) , где в качестве параметра передается созданный объект (новый узел).

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

Для удаления узла можно воспользоваться методом, применив его к узлу, который требуется удалить, т.е. DomNode->unlink_node() .

Пример 14.5. Добавление описания новой личности в каталог

Заключение

Итак, мы изучили ряд функций, позволяющих манипулировать данными, хранящимися в XML -формате. Это, конечно же, далеко не полный перечень существующих функций. В версии PHP5 он значительно усовершенствован и в большей степени соответствует стандарту DOM . Тем не менее знание приведенных здесь основных функций может оказаться полезным при решении конкретных прикладных задач.

Причина DOMElement :: GetAttribute () возвращает пустую строку, если нет такого атрибута

Возвращаемые значения

Значение атрибута, или пустую строку, если атрибут с указанным именем не найден.

Кто — нибудь знает причину возвращения пустую строку вместо того , чтобы просто NULL ?

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

Таким образом, спецификация гласит следующее:

Таким образом, строка ожидаемый типа на кросс-платформенной основе. РНР DOMDocument соответствует этому.

Я не думаю , что это действительно имеет значение то , что он вернется. Для проверки достоверности результата необходимо вызвать в DOMElement::hasAttribute() любом случае.

Это может быть просто потому , что они хотят , чтобы держать его в простой и иметь все возвращаемые строки вместо магического значения другого типа (например null ).

Что такое код domelement &#62;get_attribute

(no version information, might be only in CVS)

DomElement->get_attribute() — Returns the value of the given attribute

说明 >DomElement <
string get_attribute ( string name )
>

Returns the value of the given attribute in the current element.

Since PHP 4.3, if no attribute with given name is found, an empty string is returned.

The name of the seeked attribute. This parameter is case sensitive.

иї”е›ћеЂј

Returns the name of the attribute as a string or an empty string if no attribute with the given name is found.

иЊѓдѕ‹

дѕ‹е­ђ 1. Getting the value of an attribute

if (! $dom = domxml_open_mem ( $xmlstr )) <
echo «Error while parsing the document\n» ;
exit;
>

// get chapter
$root = $dom -> document_element ();
echo $root -> get_attribute ( ‘language’ ); // en

Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL