|
XXV. Функции 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().
Это расширение использует
GNOME xml-библиотеки. Загрузите и установите эту библиотеку. Вам понадобится как минимум версия libxml-2.2.7.
Это расширение доступно, если PHP был сконфигурирован с опцией
--with-dom=[DIR].
Имеются некоторые функции, которые не вписываются стандарт 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;
<!-- комментарий -->
<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->specified - проверяет, специфицирован ли атрибут
- DomAttribute->value - возвращает значение атрибута
- DomDocument->add_root [не рекомендуется применять] - добавляет узел root
- DomDocument->create_attribute - создаёт новый атрибут
- DomDocument->create_cdata_section - создаёт новый узел cdata
- DomDocument->create_comment - создаёт новый узел комментария
- 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
- 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_node - добавляет новый атрибут
- DomElement->set_attribute - добавляет новый атрибут
- DomElement->tagname - возвращает имя элемента
- 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 - замещает узел
|