Функции 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. Не рекомендуемые функции и замены для них
Эти константы определены данным расширением и будут доступны только в том случае, если либо вкомпилированы в РНР, либо динамически загружены на этапе прогона.
Таблица 2. XML-константы
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)
Таблица 5. Класс DomElement (DomElement : DomNode)
Таблица 6. Класс DomNode
Таблица 7. Класс DomAttribute (DomAttribute : DomNode)
Таблица 8. Класс DomProcessingInstruction (DomProcessingInstruction : DomNode)
Таблица 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)
Класс 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_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