Функции DOM XML
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. Не рекомендуемые функции и замены для них
| Старая функция | Новая функция |
|---|---|
| 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() |
| Имя метода | Имя функции | Примечание |
|---|---|---|
| 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().
- Содержание
- 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 - замещает узел
- DomNode->set_content - устанавливает содержимое узла
- DomNode->set_name - устанавливает имя узла
- DomNode->unlink_node - удаляет узел
- DomProcessingInstruction->data - возвращает данные pi-узла
- DomProcessingInstruction->target - возвращает цель/target pi-узла
- domxml_new_doc - создаёт новый пустой XML-документ
- domxml_open_file - создаёт DOM-объект из XML-файл
- domxml_open_mem - создаёт DOM-объект XML-документа
- domxml_version - получает версию XML-библиотеки
- domxml_xmltree - создаёт дерево PHP-объектов из XML-документа
- xpath_eval_expression - вычисляет XPath Location Path в данной строке
- xpath_eval - вычисляет XPath Location Path в данной строке
- xpath_new_context - создаёт новый xpath-контекст
- xptr_eval - вычисляет XPtr Location Path в данной строке
- xptr_new_context - создаёт новый XPath Context
