Основы PHP
  Что такое PHP?
  Возможности PHP
  Преимущества PHP
  История развития
  Что нового в PHP5?
  «Движок» PHP
  Переход на PHP 5.3
New Переход на PHP 5.6
  Введение в PHP
  Изучение PHP
  Основы CGI
  Синтаксис PHP
  Типы данных PHP
  Переменные в PHP
  Константы PHP
  Выражения PHP
  Операторы PHP
  Конструкции PHP
  Ссылки в PHP
  PHP и ООП
  Безопасность
  Функции PHP
  Функции по категориям
  Функции по алфавиту
  Стандартные функции
  Пользовательские
  PHP и HTTP
  Работа с формами
  PHP и Upload
  PHP и Cookies
  PHP и базы данных
  PHP и MySQL
  Документация MySQL
  Учебники
  Учебники по PHP
  Учебники по MySQL
  Другие учебники
  Уроки PHP
  Введение
  Самые основы
  Управление
  Функции
  Документация
  Математика
  Файлы
  Основы SQL
  Дата и время
  CURL
  Изображения
  Стили
  Безопасность
  Установка
  Проектирование БД
  Регулярные выражения
  Подготовка к работе
  Быстрый старт
  Установка PHP
  Установка MySQL
  Конфигурация PHP
  Download / Скачать
  Скачать Apache
  Скачать PHP
  Скачать PECL
  Скачать PEAR
  Скачать MySQL
  Редакторы PHP
  Полезные утилиты
  Документация
  PHP скрипты
  Скачать скрипты
  Инструменты
  PHP в примерах
  Новости портала
 Главная   »  Функции PHP
 
 

Функции DOM XML

Введение

Расширение domxml может быть переопределено в версии PHP 4.3.0 в пользу лучшего соответствия стандарту DOM. В этом расширении всё ещё имеются некоторые старые функции, но они более не должны использоваться. Особо нужно исключить не-объектно-ориентированные функции.

Это расширение позволяет работать с XML-документов с помощью DOM API. Оно также предоставляет функцию domxml_xmltree() для включения всего XML-документа в дерево PHP-объектов. В настоящее время это дерево должно считаться read-only - вы можете его модифицировать, но это не имеет смысла, поскольку DomDocument_dump_mem() не может быть применена. Следовательно, если вы хотите читать XML-файл и записывать модифицированную его версию, используйте функции DomDocument_create_element(), DomDocument_create_text_node(), set_attribute(), etc. и в конце - DomDocument_dump_mem().

Примечание: Данное расширение не является более экспериментальным. Однако данное расширение никогда не будет поставляться с PHP 5, только с PHP 4. Если Вам необходима поддержка DOM XML в PHP 5 Вам нужно использовать расширение DOM. Расширение domxml не совместимо с расширением DOM.

Требования

Это расширение использует GNOME xml-библиотеки. Загрузите и установите эту библиотеку. Вам понадобится как минимум версия libxml-2.4.14.

Для использование оснобенностей DOM XSLT Вы можете использовать библиотеку libxslt и EXSLT расширения с http://www.exslt.org/. Загрузите и установите эти библиотеки, если Вы планируете использовать (расширенный) XSLT. Вам необходима версия не ниже libxslt-1.0.18.

Установка

Это расширение доступно, если PHP был сконфигурирован с опцией --with-dom=[DIR].

Используйте при компиляции опцию --with-dom-xslt[=DIR] для включения поддержки DOM XSLT. DIR - это установочная директория libxslt . Добавьте --with-dom-exslt[=DIR] для включения поддержки DOM EXSLT, где DIR - директория установленного libexslt.

Это расширение PECL не поставляется вместе с PHP. Дополнительная информация, такая как новые версии, скачивание, исходные файлы, информация о разработчике и CHANGELOG, могут быть найдены здесь: http://pecl.php.net/package/domxml.

В PHP 4 исходные файлы этого расширения PECL могут быть найдены в директории ext/ внутри исходных файлов PHP или по ссылке PECL выше.

Пользователям Windows необходимо включить библиотеку php_domxml.dll в php.ini. В PHP 4 этот DLL находится в директории extensions/ внутри директории бинарного дистрибутива PHP для Windows. Вы можете скачать DLL этого расширения PECL со страницы PHP Downloads или http://snaps.php.net/.

Также, есть одна дополнительная DLL, которая должна быть доступна для системной директории. Ее имя: Для PHP <= 4.2.0, это libxml2.dll. Для PHP >= 4.3.0, это iconv.dll. В PHP 5.0.0, нет необходимости подключать библиотеку iconv, так как она является частью бинарников PHP для Windows по умолчанию.

Не рекомендуемые функции

Имеются некоторые функции, которые не вписываются стандарт DOM и не должны поэтому использоваться; они перечислены в следующей таблице. Функция DomNode_append_child() изменила поведение. Она добавляет теперь потомка, а не родственника. Если это нарушает работу вашего приложения, используйте не-DOM-функцию DomNode_append_sibling().

Таблица 1. Не рекомендуемые функции и замены для них
Старая функция Новая функция
xmldoc domxml_open_mem()
xmldocfiel domxml_open_file()
domxml_new_xmldoc domxml_new_doc()
domxml_dump_mem DomDocument_dump_mem()
domxml_dump_mem_file DomDocument_dump_file()
DomDocument_dump_mem_file DomDocument_dump_file()
DomDocument_add_root DomDocument_create_element() с последующей DomNode_append_child()
DomDocument_dtd DomDocument_doctype()
DomDocument_root DomDocument_document_element()
DomDocument_children DomNode_child_nodes()
DomDocument_imported_node Замены нет.
DomNode_add_child Создать новый узел с помощью, например, DomDocument_create_element() и добавить его функцией DomNode_append_child().
DomNode_children DomNode_child_nodes()
DomNode_parent DomNode_parent_node()
DomNode_new_child Создать новый узел с помощью, например, DomDocument_create_element() и добавить его функцией DomNode_append_child().
DomNode_set_content Создать новый узел с помощью, например, DomDocument_create_text_node() и добавить его функцией DomNode_append_child().
DomNode_get_content Содержимое является просто текстовым узлом, и доступ к нему может быть получен с помощью DomNode_child_nodes().
DomNode_set_content Содержимое является просто текстовым узлом и может добавлено с помощью DomNode_append_child().

Предопределённые константы

Эти константы определены данным расширением и будут доступны только в том случае, если либо вкомпилированы в РНР, либо динамически загружены на этапе прогона.

Таблица 2. XML-константы
Константа Значение Описание
XML_ELEMENT_NODE (integer) 1 Узел является элементом
XML_ATTRIBUTE_NODE ( integer) 2 Узел является атрибутом
XML_TEXT_NODE (integer) 3 Узел является блоком текста
XML_CDATA_SECTION_NODE( integer) 4  
XML_ENTITY_REF_NODE (integer) 5  
XML_ENTITY_NODE(integer) 6 Узел является мнемоникой
XML_PI_NODE (integer) 7 Узел является инструкцией процессинга
XML_COMMENT_NODE( integer) 8 Узел является комментарием
XML_DOCUMENT_NODE(integer) 9 Узел является документом
XML_DOCUMENT_TYPE_NODE (integer) 10  
XML_DOCUMENT_FRAG_NODE(integer) 11  
XML_NOTATION_NODE (integer) 12  
XML_GLOBAL_NAMESPACE(integer) 1  
XML_LOCAL_NAMESPACE (integer) 2  
XML_HTML_DOCUMENT_NODE(integer)    
XML_DTD_NODE (integer)    
XML_ELEMENT_DECL_NODE (integer)    
XML_ATTRIBUTE_DECL_NODE (integer)    
XML_ENTITY_DECL_NODE (integer)    
XML_NAMESPACE_DECL_NODE (integer)    
XML_ATTRIBUTE_CDATA (integer)    
XML_ATTRIBUTE_ID (integer)    
XML_ATTRIBUTE_IDREF (integer)    
XML_ATTRIBUTE_IDREFS (integer)    
XML_ATTRIBUTE_ENTITY (integer)    
XML_ATTRIBUTE_NMTOKEN (integer)    
XML_ATTRIBUTE_NMTOKENS (integer)    
XML_ATTRIBUTE_ENUMERATION (integer)    
XML_ATTRIBUTE_NOTATION (integer)    
XPATH_UNDEFINED (integer)    
XPATH_NODESET (integer)    
XPATH_BOOLEAN (integer)    
XPATH_NUMBER (integer)    
XPATH_STRING (integer)    
XPATH_POINT (integer)    
XPATH_RANGE (integer)    
XPATH_LOCATIONSET (integer)    
XPATH_USERS (integer)    
XPATH_NUMBER (integer)    

Классы

API этого модуля следует, насколько возможно, стандарту DOM Level 2. Поэтому данный API является полностью объектно-ориентированным. Хорошо было бы иметь доступ к стандарту DOM при использовании этого модуля. Хотя данный API является объектно-ориентированным, имеется много функций, которые можно вызывать не-объектно-ориентированным путём с помощью передачи объекта, с которым работают, как первого аргумента. Эти функции в основном предназначены для сохранения совместимости со старыми версиями расширения, но больше не рекомендуются для использования в новых разработках.

Этот API отличается от официального DOM API двумя вещами. Во-первых, все атрибуты класса реализованы как функции  с тем же именем, а во-вторых - имена  функций следую соглашению PHP по именованию. Это значит, что DOM-функция lastChild() будет записана как last_child().

Этот модуль определяет несколько классов, которые перечислены - включая их методы - в следующих таблицах. Классы с эквивалентом в DOM Standard именуются DOMxxx.

Таблица 3. Список классов
Имя класса Родительский класс
DomAttribute DomNode
DomCData DomNode
DomComment DomCData : DomNode
DomDocument DomNode
DomDocumentType DomNode
DomElement DomNode
DomEntity DomNode
DomEntityReference DomNode
DomProcessingInstruction DomNode
DomText DomCData : DomNode
Parser Пока ещё называется DomParser
XPathContext  

Таблица 4. Класс DomDocument (DomDocument : DomNode)
Имя метода Имя функции Примечание
doctype DomDocument_doctype()  
document_elemnent DomDocument_document_element()  
create_element DomDocument_create_element()  
create_text_node DomDocument_create_text_node()  
create_comment DomDocument_create_comment()  
create_cdata_section DomDocument_create_cdata_section()  
create_processing_instruction DomDocument_create_processing_instruction()  
create_attribute DomDocument_create_attribute()  
create_entity_reference DomDocument_create_entity_reference()  
get_elements_by_tagname DomDocument_get_elements_by_tagname()  
get_element_by_id DomDocument_get_element_by_id()  
dump_mem DomDocument_dump_mem() не DOM стандарт
dump_file DomDocument_dump_file() не DOM стандарт
html_dump_mem DomDocument_html_dump_mem() не DOM стандарт
xpath_init xpath_init не DOM стандарт
xpath_new_context xpath_new_context не DOM стандарт
xptr_new_context xptr_new_context не DOM стандарт

Таблица 5. Класс DomElement (DomElement : DomNode)
Имя метода Имя функции Примечание
tagname DomElement_tagname()  
get_attribute DomElement_get_attribute()  
set_attribute DomElement_set_attribute()  
remove_attribute DomElement_remove_attribute()  
get_attribute_node DomElement_get_attribute_node()  
set_attribute_node DomElement_set_attribute_node()  
get_elements_by_tagname DomElement_get_elements_by_tagname()  
has_attribute DomElement_has_attribute()  

Таблица 6. Класс DomNode
Имя метода Примечание
DomNode_node_name()  
DomNode_node_value()  
DomNode_node_type()  
DomNode_last_child()  
DomNode_first_child()  
DomNode_child_nodes()  
DomNode_previous_sibling()  
DomNode_next_sibling()  
DomNode_parent_node()  
DomNode_owner_document()  
DomNode_insert_before()  
DomNode_append_child()  
DomNode_append_sibling() Нет в DOM-стандарте. Эта функция эмулирует бывшее поведение DomNode_append_child().
DomNode_remove_child()  
DomNode_has_child_nodes()  
DomNode_has_attributes()  
DomNode_clone_node()  
DomNode_attributes()  
DomNode_unlink_node() Нет в DOM-стандарте
DomNode_replace_node() Нет в DOM-стандарте
DomNode_set_content() Нет в DOM-стандарте, не рекомендуется
DomNode_get_content() Нет в DOM-стандарте, не рекомендуется
DomNode_dump_node() Нет в DOM-стандарте
DomNode_is_blank_node() Нет в DOM-стандарте

Таблица 7. Класс DomAttribute (DomAttribute : DomNode)
Имя метода   Примечание
name DomAttribute_name()  
value DomAttribute_value()  
specified DomAttribute_specified()  

Таблица 8. Класс DomProcessingInstruction (DomProcessingInstruction : DomNode)
Имя метода Имя функции Примечание
target DomProcessingInstruction_target()  
data DomProcessingInstruction_data()  

Таблица 9. Класс Parser
<
Имя метода Имя функции Примечание
add_chunk Parser_add_chunk()  
end Parser_end()  

Таблица 10. Класс XPathContext
Имя метода Имя функции Примечание
eval XPathContext_eval()  
eval_expression XPathContext_eval_expression()  
register_ns XPathContext_register_ns()  

Таблица 11. Класс DomDocumentType (DomDocumentType : DomNode)
Имя метода Имя функции Примечание
name DomDocumentType_name()  
entities DomDocumentType_entities()  
notations DomDocumentType_notations()  
public_id DomDocumentType_public_id()  
system_id DomDocumentType_system_id()  
internal_subset DomDocumentType_internal_subset()  

Класс DomDtd происходит от DomNode. DomComment происходит от DomCData.

Примеры

Многие примеры в этом справочнике требуют строки xml. Вместо повторения этой строки в каждом примере, она будет помещена в файл и включена в каждый пример. Этот include-файл показан в следующем разделе-примере. Вы можете также создать xml-документ и читать его с помощью DomDocument_open_file().

Пример 1. Include-файл example.inc с xml-строкой

<?php
$xmlstr 
"<?xml version='1.0' standalone='yes'?>
<!DOCTYPE chapter SYSTEM '/share/sgml/Norman_Walsh/db3xml10/db3xml10.dtd'
[ <!ENTITY sp \"spanish\">
]>
<!-- lsfj  -->
<chapter language='en'><title language='en'>Title</title>
 <para language='ge'>
  &sp;
  <!-- comment -->
  <informaltable ID='findme' language='&sp;'>
   <tgroup cols='3'>
    <tbody>
     <row><entry>a1</entry><entry
morerows='1'>b1</entry><entry>c1</entry></row>
<row><entry>a2</entry><entry>c2</entry></row>
     <row><entry>a3</entry><entry>b3</entry><entry>c3</entry></row>
    </tbody>
   </tgroup>
  </informaltable>
 </para>
</chapter>"
;
?>
Содержание

 
DomAttribute->name - возвращает имя атрибута
DomAttribute->set_value - устанавливает значение атрибута
DomAttribute->specified - проверяет, специфицирован ли атрибут
DomAttribute->value - возвращает значение атрибута
DomDocument->add_root [не рекомендуется применять] - добавляет узел root
DomDocument->create_attribute - создаёт новый атрибут
DomDocument->create_cdata_section - создаёт новый узел cdata
DomDocument->create_comment - создаёт новый узел комментария
DomDocument->create_element_ns - создает новый элемент узла с ассоциированным namespace
DomDocument->create_element - создаёт новый узел элемента
DomDocument->create_entity_reference - создает справочник объекта
DomDocument->create_processing_instruction - создаёт новый узел PI
DomDocument->create_text_node - создаёт новый текстовый узел
DomDocument->doctype - возвращает тип документа
DomDocument->document_element - возвращает узел элемента root
DomDocument->dump_file - выполняет дамп внутреннего дерева XML в файл
DomDocument->dump_mem - выполняет дамп внутреннего дерева XML в строку
DomDocument->get_element_by_id - ищет элемент с определённым id
DomDocument->get_elements_by_tagname -
DomDocument->html_dump_mem - выполняет дамп внутреннего дерева XML в строку как HTML
DomDocument->xinclude - замены XIncludes в объекте DomDocument
DomDocumentType->entities - возвращает список мнемоник
DomDocumentType->internal_subset - возвращает внутренний поднабор
DomDocumentType->name - возвращает имя типа документа
DomDocumentType->notations - возвращает список нотаций
DomDocumentType->public_id - возвращает public id типа документа
DomDocumentType->system_id - возвращает system id типа документа
DomElement->get_attribute_node - возвращает значение атрибута
DomElement->get_attribute - возвращает значение атрибута
DomElement->get_elements_by_tagname - добавляет новый атрибут
DomElement->has_attribute - добавляет новый атрибут
DomElement->remove_attribute - добавляет новый атрибут
DomElement->set_attribute - добавляет новый атрибут
DomElement->tagname - возвращает имя элемента
DomNode->add_namespace - добавляет описание namespace в узел
DomNode->append_child - добавляет нового потомка в конец потомков
DomNode->append_sibling - добавляет нового родственника в узел
DomNode->attributes - возвращает список атрибутов
DomNode->child_nodes - возвращает потомков узла
DomNode->clone_node - клонирует узел
DomNode->dump_node - дамп отдельного узла
DomNode->first_child - возвращает первого потомка узла
DomNode->get_content - получает содержимое узла
DomNode->has_attributess - проверяет, имеет ли узел атрибуты
DomNode->has_child_nodes - проверяет, имеет ли узел потомков
DomNode->insert_before - вставляет новый узел как потомка
DomNode->is_blank_node - проверяет, является ли узел чистым
DomNode->last_child - возвращает последнего потомка узла
DomNode->next_sibling - возвращает следующего родственника узла
DomNode->node_name - возвращает имя узла
DomNode->node_type - возвращает тип узла
DomNode->node_value - возвращает значение узла
DomNode->owner_document - возвращает документ, к которому этот узел принадлежит
DomNode->parent_node - возвращает предка узла
DomNode->prefix - возвращает префикс пространства имён узла
DomNode->previous_sibling - возвращает предыдущего родственника узла
DomNode->remove_child - удаляет потомка из списка потомков
DomNode->replace_child - замещает потомка
DomNode->replace_node - замещает узел
DomNode->set_content - устанавливает содержимое узла
DomNode->set_name - устанавливает имя узла
DomNode->set_namespace - устанавливает namespace узла
DomNode->unlink_node - удаляет узел
DomProcessingInstruction->data - возвращает данные pi-узла
DomProcessingInstruction->target - возвращает цель/target pi-узла
DomXsltStylesheet->process() - применяет трансформацию XSLT на объект DomDocument
DomXsltStylesheet->result_dump_file() - выводит дамп результата из XSLT-трансформации в файл
DomXsltStylesheet->result_dump_mem() - выводит дамп результата из XSLT-транформации обратно в строку
domxml_new_doc - создаёт новый пустой XML-документ
domxml_open_file - создаёт DOM-объект из XML-файл
domxml_open_mem - создаёт DOM-объект XML-документа
domxml_version - получает версию XML-библиотеки
domxml_xmltree - создаёт дерево PHP-объектов из XML-документа
domxml_xslt_stylesheet_doc - создает объект DomXsltStylesheet из объекта DomDocument
domxml_xslt_stylesheet_file - создает объект DomXsltStylesheet из документа XSL в файл
domxml_xslt_stylesheet - создает объект DomXsltStylesheet из документа XSL в строку
domxml_xslt_version - получает версию библиотеки XSLT
xpath_eval_expression - вычисляет XPath Location Path в данной строке
xpath_eval - вычисляет XPath Location Path в данной строке
xpath_new_context - создаёт новый xpath-контекст
xpath_register_ns_auto - регистрирует данный namespace в переданном контексте XPath
xpath_register_ns - регистрирует данный namespace в переданном контексте XPath
xptr_eval - вычисляет XPtr Location Path в данной строке
xptr_new_context - создаёт новый XPath Context
 
 
 Функции по алфавиту 
   Содержание   
 Функции по категориям 
Есть еще вопросы или что-то непонятно - добро пожаловать на наш  форум портала PHP.SU 
 

 
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS