Há algumas funções que não se adequam no padrão DOM e não devem ser usadas. Estas função são listadas na seguinte tabela abaixo. A função DomNode_append_child() teve modificada seu comportamento. Ela agora adiciona um filho e não a um vizinho. Se esta quebra seu programa, use a função não DOM DomNode_append_sibling().
| Velha função | Nova função |
|---|---|
| xmldoc | domxml_open_mem() |
| xmldocfile | 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() seguida por DomNode_append_child() |
| DomDocument_dtd | DomDocument_doctype() |
| DomDocument_root | DomDocument_document_element() |
| DomDocument_children | DomNode_child_nodes() |
| DomDocument_imported_node | No replacement. |
| DomNode_add_child | Cria um novo node com e.g. DomDocument_create_element() e adiciona-o com DomNode_append_child(). |
| DomNode_children | DomNode_child_nodes() |
| DomNode_parent | DomNode_parent_node() |
| DomNode_new_child | Cria um novo node com e.g. DomDocument_create_element() e adiciona-o com DomNode_append_child(). |
| DomNode_set_content | Cria um novo node com e.g. DomDocument_create_text_node() e adiciona-o com DomNode_append_child(). |
| DomNode_get_content | Conteúdo é somente um texto do node e pode ser acessado com DomNode_child_nodes(). |
| DomNode_set_content | Conteúdo é somente um texto do node e pode ser adicionado com DomNode_append_child(). |
A API do módulo segue o padrão DOM Level 2 bem proximamente. Conseqüentemente, a API é totalmente orientada a objeto. É uma boa idéia ter o padrão DOM disponível quando usando este módulo. Embora a API seja orientada a objeto, há muitas funções que podem ser chamadas na forma não orientada a objeto passando o objeto para operar como primeiro argumento. Estas funções são principalmente para preservar compatibilidade com antigas versões desta extensão, e não deve ser usada quando criando novos scripts.
A API difere da oficial DOM API em duas formas. Primeiro, todo atributo de classe são implementado como funções com o mesmo nome. Segundo, o nome das funções seguem a convenção de nomes do PHP. Isto significa que a função DOM lastChild() será escrita como last_child().
Este módulo define um número de classes, que são listados - incluindo o módulo delas - na seguinte tabela. Classes com um equivalente no padrão DOM são nomeadas DOMxxx.
| Nome da classe | Classe pai |
|---|---|
| DomAttribute | DomNode |
| DomCData | DomNode |
| DomComment | DomCData : DomNode |
| DomDocument | DomNode |
| DomDocumentType | DomNode |
| DomElement | DomNode |
| DomEntity | DomNode |
| DomEntityReference | DomNode |
| DomProcessingInstruction | DomNode |
| DomText | DomCData : DomNode |
| Parser | Atualmente permanece chamada DomParser |
| XPathContext |
| Nome do método | Nome da função | Observação |
|---|---|---|
| doctype | DomDocument_doctype() | |
| document_element | 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() | não é padrão DOM |
| dump_file | DomDocument_dump_file() | não é padrão DOM |
| html_dump_mem | DomDocument_html_dump_mem() | não é padrão DOM |
| xpath_init | xpath_init | não é padrão DOM |
| xpath_new_context | xpath_new_context | não é padrão DOM |
| xptr_new_context | xptr_new_context | não é padrão DOM |
| Nome do método | Nome da função | Observação |
|---|---|---|
| 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() |
| Nome do método | Observação |
|---|---|
| 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() | Não é padrão DOM. Esta função emula o comportamento da DomNode_append_child(). |
| DomNode_remove_child() | |
| DomNode_has_child_nodes() | |
| DomNode_has_attributes() | |
| DomNode_clone_node() | |
| DomNode_attributes() | |
| DomNode_unlink_node() | Não é padrão DOM |
| DomNode_replace_node() | Não é padrão DOM |
| DomNode_set_content() | Não é padrão DOM, obsoleta |
| DomNode_get_content() | Não é padrão DOM, obsoleta |
| DomNode_dump_node() | Não é padrão DOM |
| DomNode_is_blank_node() | Não é padrão DOM |
| Nome do método | Observação | |
|---|---|---|
| name | DomAttribute_name() | |
| value | DomAttribute_value() | |
| specified | DomAttribute_specified() |
| Nome do método | Nome da função | Observação |
|---|---|---|
| target | DomProcessingInstruction_target() | |
| data | DomProcessingInstruction_data() |
| Nome do método | Nome da função | Observação |
|---|---|---|
| add_chunk | Parser_add_chunk() | |
| end | Parser_end() |
| Nome do método | Nome da função | Observação |
|---|---|---|
| eval | XPathContext_eval() | |
| eval_expression | XPathContext_eval_expression() | |
| register_ns | XPathContext_register_ns() |
| Nome do método | Nome da função | Observação |
|---|---|---|
| name | DomDocumentType_name() | |
| entities | DomDocumentType_entities() | |
| notations | DomDocumentType_notations() | |
| public_id | DomDocumentType_public_id() | |
| system_id | DomDocumentType_system_id() | |
| internal_subset | DomDocumentType_internal_subset() |
As classes DomDtd são derivadas da DomNode. DomComment é derivada da DomCData.
Muitos exemplos nesta referência requerem uma string XML. Ao invés de repetir esta string em cada exemplo, iremos colocá-la em um arquivo que será incluido para cada exemplo. Este arquivo incluso é mostrado na seção do exemplo seguinte. Alternativamente, você pode criar um documento XML e lê-lo com DomDocument_open_file().
Exemplo #1 Arquivo do include example.inc com a string 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>";
?>