Avertissement |
Ce module est EXPERIMENTAL. Cela signifie que le comportement de ces fonctions, leurs noms et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez ce module à vos risques et périls. |
L'extension DOM XML a été reprise en main en PHP PHP 4.3.0 pour être mieux compatible avec les standards DOM. L'extension contient encore de vieilles fonctions, mais elles ne sont plus utilisées. En particulier, les fonctions qui ne sont pas orientées objets ne doivent pas être utilisées.
Cette extension vous permet de générer des documents XML avec les API DOM. Elle fournit aussi une fonction xmltree() qui transforme un fichier XML en tableau PHP. Actuellement, ce tableau est accessible uniquement en lecture. Cela ne siginifie pas que vous ne pouvez pas le modifier, mais cela n'aurait aucun sens car domxml_dumpmem() ne pourra pas prendre ces modifications en considération. Par conséquent, si vous voulez lire un fichier XML et écrire sa version modifiée, utilisez les fonctions domxml_add_node(), domxml_set_attribute(), etc... et finalement domxml_dumpmem().
Cette extension utilise la librairie GNOME XML. Téléchargez la, puis installez-la. Vous aurez besoin de la version libxml-2.4.14 ou plus récent. Pour utiliser les fonctionnalités DOM XSLT vous pouvez utiliser la librairie libxslt library et les progres des EXSLT (http://www.exslt.org/). Téléchargez et installez ces librairies si vous envisagez d'exploiter ces fonctionnalités. Vous aurez besoin d'aut moin libxslt-1.0.18.
Cette extension est uniquement disponible si PHP a été configuré lors de la compilation avec l'option --with-dom=[DIR]. Ajoutez --with-dom-xslt[=DIR] pour inclure le support DOM XSLT. DIR est le dossier d'installatoin de libxslt. Ajoutez --with-dom-exslt[=DIR] pour inclure le support DOM EXSLT. DIR est le dossier d'installatoin de libxsl.
Note aux utilisateurs Win32 : Afin d'activer ce module dans l'environnement Windows, vous devez copier les librairies libxml2.dll depuis le dossier DLL de PHP/Win32 dans le dossier système SYSTEM32 de votre machine (par exemple : C:\WINNT\SYSTEM32 or C:\WINDOWS\SYSTEM32).
Il y a un groupe de fonction qui ne sont pas compatibles avec les standards DOM et qui ne devraient plus être utilisées. Ces fonctions sont listées dans la table ci-dessous. La fonction domnode_append_child() a vu son comportement changer. Désormais, elle ajoute un fils et non pas un frère. Si cela casse votre application, utilisez plutôt la fonction domnode_append_sibling(), qui ne fait pas partie des standards.
Tableau 1. Fonctions abandonnées et leur remplacement
Ancienne fonction | Nouvelle fonction |
---|---|
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() suivie de 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 | Create a new node with e.g. domdocument_create_element() puis ajoutez-le avec domnode_append_child(). |
DomNode_children | domnode_child_nodes() |
DomNode_parent | domnode_parent_node() |
DomNode_new_child | Create a new node with e.g. domdocument_create_element() puis ajoutez-le avec domnode_append_child(). |
DomNode_set_content | Create a new node with e.g. domdocument_create_text_node() puis ajoutez-le avec domnode_append_child(). |
DomNode_get_content | Le contenu est juste un noeud de texte, et est accessible via domnode_child_nodes(). |
DomNode_set_content | Le contenu est juste un noeud de texte, et est accessible via domnode_append_child(). |
Ces constantes sont définies par cette extension, et ne sont disponibles que si cette extension a été compilée avec PHP, ou bien chargée au moment de l'exécution.
Tableau 2. XML constants
Constant | Value | Description |
---|---|---|
XML_ELEMENT_NODE (integer) | 1 | Node is an element |
XML_ATTRIBUTE_NODE (integer) | 2 | Node is an attribute |
XML_TEXT_NODE (integer) | 3 | Node is a piece of text |
XML_CDATA_SECTION_NODE (integer) | 4 | |
XML_ENTITY_REF_NODE (integer) | 5 | |
XML_ENTITY_NODE (integer) | 6 | Node is an entity like |
XML_PI_NODE (integer) | 7 | Node is a processing instruction |
XML_COMMENT_NODE (integer) | 8 | Node is a comment |
XML_DOCUMENT_NODE (integer) | 9 | Node is a document |
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) |
L'API de ce module suit le standard DOM niveau 2 aussi fidèlement que possible. Par conséquent, l'API est totalement orientée objet. C'est une bonne idée d'avoir les standards DOM disponibles sous la main, lorsque vous utilisez ce module. Bien que cette API soit orientée objet, il existe de nombreuses fonctions qui peuvent être appelées d'une manière non objet, en passant l'objet à utiliser comme premier argument de la fonction. Cest fonctions sont essentiellement conservées pour assurer la compatibilité avec les extensions plus anciennes, et ne doivent pas être utilisées.
Cette API diffère de l'API officielle DOM en deux points. Le premier est que tous les attributs des classes sont implémentés comme des fonctions du même nom. Le second est qu les noms des fonctions suivent les standards PHP. Cela signifie que la fonction DOM lastChild() s'écrit en PHP last_child().
Ce module définit un grand nombre de classe, qui sont listés en incluant leur méthodes dans les tables suivantes. Les classes ayant un équivalent DOM sont nommées DOMxxx.
Tableau 3. Liste de classes
Nom de la classe | Classes parents |
---|---|
DomAttribute | DomNode |
DomCData | DomNode |
DomComment | DomCData : DomNode |
DomDocument | DomNode |
DomDocumentType | DomNode |
DomElement | DomNode |
DomEntity | DomNode |
DomEntityReference | DomNode |
DomProcessingInstruction | DomNode |
DomText | DomCData : DomNode |
Parser | Actuellement, toujours appelée DomParser |
XPathContext |
Tableau 4. DomDocument class (DomDocument : DomNode)
Nom de la méthode | Nom de la fonction | Remarques |
---|---|---|
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() | not DOM standard |
dump_file | domdocument_dump_file() | not DOM standard |
html_dump_mem | domdocument_html_dump_mem() | Non standard DOM |
xpath_init | xpath_init | Non standard DOM |
xpath_new_context | xpath_new_context | Non standard DOM |
xptr_new_context | xptr_new_context | Non standard DOM |
Tableau 5. Classe DomElement (DomElement : DomNode)
Nom de la méthode | Nom de la fonction | Remarques |
---|---|---|
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() | |
get_elements_by_tagname | domelement_get_elements_by_tagname() | |
has_attribute | domelement_has_attribute() |
Tableau 6. Classe DomNode
Nom de la méthode | Remarques |
---|---|
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() | Non standard DOM. Cette fonction émule le comportement précédent de domnode_append_child(). |
domnode_remove_child() | |
domnode_has_child_nodes() | |
domnode_has_attributes() | |
domnode_clone_node() | |
domnode_attributes() | |
domnode_unlink_node() | Non standard DOM |
domnode_replace_node() | Non standard DOM |
domnode_set_content() | Non standard DOM, deprecated |
domnode_get_content() | Non standard DOM, deprecated |
domnode_dump_node() | Non standard DOM |
domnode_is_blank_node() | Non standard DOM |
Tableau 7. Classe DomAttribute (DomAttribute : DomNode)
Nom de la méthode | Remarques | |
---|---|---|
name | domattribute_name() | |
value | domattribute_value() | |
specified | domattribute_specified() |
Tableau 8. Classe DomProcessingInstruction (DomProcessingInstruction : DomNode)
Nom de la méthode | Nom de la fonction | Remarques |
---|---|---|
target | domprocessinginstruction_target() | |
data | domprocessinginstruction_data() |
Tableau 9. Classe Parser
Nom de la méthode | Nom de la fonction | Remarques |
---|---|---|
add_chunk | parser_add_chunk() | |
end | parser_end() |
Tableau 10. Classe XPathContext
Nom de la méthode | Nom de la fonction | Remarques |
---|---|---|
eval | xpathcontext_eval() | |
eval_expression | xpathcontext_eval_expression() | |
register_ns | xpathcontext_register_ns() |
Tableau 11. Classe DomDocumentType (DomDocumentType : DomNode)
Nom de la méthode | Nom de la fonction | Remarques |
---|---|---|
name | domdocumenttype_name() | |
entities | domdocumenttype_entities() | |
notations | domdocumenttype_notations() | |
public_id | domdocumenttype_public_id() | |
system_id | domdocumenttype_system_id() | |
internal_subset | domdocumenttype_internal_subset() |
Les classes DomDtd sont dérivées de DomNode. DomComment est dérivée de DomCData.
De nombreux exemples de cette partie requiert une chaîne XML. Au lieu de répéter la chaîne dans tous les exemples, elle sera mise dans un fichier, qui sera inclus dans tous les exemples. Ce fichier inclus sera mis dans la section suivante. Alternativement, vous voulez créer un document XML et le lire avec la fonction domdocument_open_file().
Précédent | Sommaire | Suivant |
scandir | Niveau supérieur | domattribute->name |