|
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-константы
Константа |
Значение |
Описание |
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)
Таблица 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 - замещает узел
-
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
|
|