Flux rss
Collection CommentCaMarche.net

DOM (Document Object Model) et SAX (Simple API for XML)

XML permet de définir la structure du document uniquement, ce qui permet d'une part de pouvoir définir séparément la présentation de ce document, d'autre part d'être capable de récupérer les données présentes dans le document pour les utiliser.

Toutefois la récupération des données encapsulées dans le document nécessite un outil appelé analyseur syntaxique (en anglais parser), permettant de parcourir le document et d'en extraire les informations qu'il contient.

Qu'appelle-t-on un analyseur ?

L'analyseur syntaxique (généralement francisé en parseur) est un outil logiciel permettant de parcourir un document et d'en extraire des informations.
Dans le cas de XML (on parle alors de parseur XML), l'analyseur permet de créer une structure hiérarchique contenant les données contenues dans le document XML.

On distingue deux types de parseurs XML :

  • les parseurs validants (validating) permettant de vérifier qu'un document XML est conforme à sa DTD
  • les parseurs non validants (non-validating) se contentant de vérifier que le document XML est bien formé (c'est-à-dire respectant la syntaxe XML de base)

Les analyseurs XML sont également divisés selon l'approche qu'ils utilisent pour traiter le document. On distingue actuellement deux types d'approches :

  • Les API utilisant une approche hiérarchique : les analyseurs utilisant cette technique construisent une structure hiérarchique contenant des objets représentant les éléments du document, et dont les méthodes permettent d'accèder aux propriétés. La principale API utilisant cette approche est DOM (Document Object Model)
  • Les API basés sur un mode événementiel permettent de réagir à des événements (comme le début d'un élément, la fin d'un élément) et de renvoyer le résultat à l'application utilisant cette API. SAX (Simple API for XML est la principale interface utilisant l'aspect événementiel
Ainsi, on tend à associer l'approche hiérarchique avec DOM et l'approche événementielle avec SAX.

Introduction à DOM

DOM (Document Object Model, traduisez modèle objet de document) est une spécification du W3C (World Wide Web Consortium) définissant la structure d'un document sous forme d'une hiérarchie d'objets, afin de simplifier l'accès aux éléments constitutifs du document.

Plus exactement DOM est un langage normalisé d'interface (API, Application Programming Interface), indépendant de toute plateforme et de tout langage, permettant à une application de parcourir la structure du document et d'agir dynamiquement sur celui-ci. Ainsi Javascript et ECMAScript utilisent DOM pour naviguer au sein du document HTML, ce qui leur permet par exemple de pouvoir récupérer le contenu d'un formulaire, le modifier, ...

DOM se divise en deux spécifications :

  • La spécification DOM level 1 (DOM niveau 1) se séparant en deux catégories
    • Core DOM level 1: La spécification pour les documents en général (dont XML)
    • HTML DOM level 1: La spécification retenant uniquement les méthodes applicables à HTML
  • La spécificaion DOM level 2 ajoutant de nouvelles fonctionnalités comme la prise en compte des feuilles de style CSS dans la hiérarchie d'objets.

Introduction à SAX

SAX est une API basée sur un modèle événementiel, cela signifie que SAX permet de déclencher des événements au cours de l'analyse du document XML.
Une application utilisant SAX implémente généralement des gestionnaires d'événements, lui permettant d'effectuer des opérations selon le type d'élément rencontré.

Soit le document XML suivant :

<personne>
<nom>Pillou</nom>
<prenom>Jean-François</prenom>
</personne>
Une interface événementielle telle que l'API SAX permet de créer des événements à partir de la lecture du document ci-dessus. Les événements générés seront :
start document
start element: personne
start element: nom
characters: Pillou
end element: nom
start element: prenom
characters: Jean-François
end element: prenom
end element: personne
end document
Ainsi, une application basée sur SAX peut gérer uniquement les éléments dont elle a besoin sans avoir à construire en mémoire une structure contenant l'intégralité du document.

L'API SAX définit les quatre interfaces suivantes :

  • DocumentHandler possèdant des méthodes renvoyant des événements relatifs au document :
    • startDocument() renvoyant un événement lié à l'ouverture du document
    • startElement() renvoyant un événement lié à la rencontre d'un nouvel élément
    • characters() renvoyant les caractères rencontrés
    • endElement() renvoyant un événement lié à la fin d'un élément
    • endDocument() renvoyant un événement lié à la fermeture du document
  • ErrorHandler possèdant des méthodes renvoyant des événements relatifs aux erreurs ou aux avertissements
  • DTDHandler renvoie des événements relatifs à la lecture de la DTD du document XML
  • EntityResolver permet de renvoyer une URL lorsqu'une URI est rencontrée

Comparaisons de DOM et de SAX

Les analyseurs utilisant l'interface DOM souffrent du fait que cette API impose de construire un arbre en mémoire contenant l'intégralité des éléments du document en mémoire quelle que soit l'application. Ainsi pour de gros documents (dont la taille est proche de la quantité de mémoire présente sur la machine) DOM devient insuffisant. De plus, cela rend l'utilisation de DOM lente, c'est la raison pour laquelle la norme DOM est généralement peu respectée car chaque éditeur l'implémente selon ses besoins, ce qui provoque l'apparition de nombreux parseurs utilisant des interfaces propriétaires...

Ainsi de plus en plus d'applications se tournent vers des API événementielles telles que SAX, permettant de traiter uniquement ce qui est nécessaire.

Dernière modification le mardi 14 octobre 2008 à 17:40:31.

Ce document intitulé « DOM (Document Object Model) et SAX (Simple API for XML) » issu de Comment Ça Marche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
COM - Component Object Model Objets COM Microsoft COM (Component Object Model) est un standard permettant de définir des API objet, c'est-à-dire permettant à des applications de communiquer par l'intermédiaire d'objets possédant un certain nombre de méthodes et de... www.commentcamarche.net/contents/vbscript/vbs-com.php3
[xml] formualire xml en vb .net? (Résolu) bonjour, est il possible de créer un formulaire xml en vb .net ouvrable par tous méme ce qui n'ont pas de licence vb .net (en excluant le piratage biensur ;)) L'informatique si sa marche c'est qu'il y a un probléme ...[*V]oM{i}T[o*]... www.commentcamarche.net/forum/affich-1291357-xml-formualire-xml-en-vb-net
[PHP & XML] multiplication par 0,4 (Résolu) Bonjour, Lorsque je parse un document XML avec simpleXML et qu'ensuite je traite les données je me retrouve avec des résultats "tronqués"! Je m'explique, voila le code : foreach ($xml->produit as $produit) { echo $produit->quantite*$produit... www.commentcamarche.net/forum/affich-3273136-php-xml-multiplication-par-0-4
Extraire toutes les images d'un document Word/PowerPoint/ExcelPour extraire toutes les images d'un document Word, vous avez besoin.... d'OpenOffice.org ! Procédure 1) Lancez OpenOffice Writer 2) Ouvrez votre document Word 3) Enregistrez-le en format OpenDocument (.odt) www.commentcamarche.net/faq/sujet-5348-extraire-toutes-les-images-d-un-document-word-powerpoint-excel
[Word] Image de fondIl est possible sous Microsoft Word d'afficher une image en arrière-plan dans un document en cliquant sur le menu Format, puis sur Arrière-Plan et enfin sur Motifs et textures. Dans l'onglet Image, cliquer sur le bouton "Sélectionner une image".... www.commentcamarche.net/faq/sujet-2606-word-image-de-fond
Quels fichiers prennent de la place sur le disque dur ?A force d'installer et de désinstaller des logiciels ou tout simplement à force d'utiliser Windows, il n'est pas rare que l'espace disque disponible viennent à manquer. La solution consiste alors soit à ajouter un nouveau disque dur, soit à faire le... www.commentcamarche.net/faq/sujet-6006-quels-fichiers-prennent-de-la-place-sur-le-disque-dur
Excel lien automatique entre 2 documents (Résolu)Bonjour à tous, Je travaille sur 2 documents excels avec des liens de cellules entre les deux docs (simplement des formules tels que: =cell xx de l'autre doc). Problème: l'actualisation/l'update des cellules que je change ne se fait pas... www.commentcamarche.net/forum/affich-3520292-excel-lien-automatique-entre-2-documents
[PHP/XML] DomDocument::getElementsByTagName (Résolu)Bonjour, J'ai besoin de recuperer du XML dans une page PHP puis d'en extraire un tag seulement. J'utilise donc DomDocument qui est tres performant, et la fonction DomDocument::getElementsByTagName. Seulement voila si je charge mon XML... www.commentcamarche.net/forum/affich-8541504-php-xml-domdocument-getelementsbytagname
Wordpress : Espace blanc à supprimer [?] (Résolu)Bonjour à tous, Voici mon problème, afin d'intégrer correctement un forum (Simple:Press Forum) dans Wordpress, j'ai créé un second modèle que j'applique uniquement pour la page qui "contient" ce forum, modèle de page dans lequel... www.commentcamarche.net/forum/affich-5966091-wordpress-espace-blanc-a-supprimer
Télécharger PDF Action Free PDF ReaderPDF Action PDF Reader est un simple et puissant éditeur de document PDF. Il permet d'imprimer les documents, d'ouvrir 17 documents en même temps. Les documents PDF peuvent ëtre exporté au format image : jpg, bmp. Chaques outils est représentés par une... www.commentcamarche.net/telecharger/telecharger-34056815-pdf-action-free-pdf-reader
Télécharger MinosVous recherchez un logiciel CAD et modélisation gratuit, simple d’utilisation, très léger et peu gourmand en ressources systèmes ? ce petit software est fait pour vous. Avec des fonctionnalités plus que satisfaisantes pour sa taille, il ne coûte rien... www.commentcamarche.net/telecharger/telecharger-34056629-minos
Télécharger KnorgKnorg (short for knowledge Organizer) est un outil qui vous permet de télécharger, organiser et partager des documents sans tenir compte de leur format ou de leur structure. Knorg est en même temps un gestionnaire d'information, un assistant de... www.commentcamarche.net/telecharger/telecharger-34057850-knorg
HP Scanjet 8300USB 2.0, Divers:Create high-resolution professional scans for graphics, photos and documents. Create high-resolution professional scans for graphics, photos and documents. Scan documents into a variety of formats and copy at the touch of a button. Get... www.commentcamarche.net/guide-achat/hp-scanjet-8300-582660-fiche-technique
Sitecom WL-150 Wireless Network Cardbus Card MIMO-XR (WL-150)Type:Interne sans-fil, Interface :PC Card, Vitesse de transfert max. LAN:0.0 LAN (Mbits), Vitesse de transfert max. WLAN:54.0 WLAN (Mbits), Standards WLAN:802.11g/b, Standards LAN :IEEE 802.1x, IEEE 802.11e, IEEE 802.1x www.commentcamarche.net/guide-achat/sitecom-wl-150-wireless-network-cardbus-card-mimo-xr-wl-150-618900-fiche-technique
Les standards RSSLe standard RSS Un flux RSS est un simple fichier texte contenant des informations structurées au format XML, permettant de décrire de façon fine le contenu du canal et de chacun des items qui le constituent. Il existe plusieurs versions du... www.commentcamarche.net/contents/xml/xml-rss.php3
Présentation des DTDLe rôle de la DTD XML permet d'utiliser un fichier afin de vérifier qu'un document XML est conforme à une syntaxe donnée. La norme XML définit ainsi une définition de document type appelée DTD (Document Type Definition), c'est-à-dire une grammaire... www.commentcamarche.net/contents/xml/xmldtd.php3
Introduction à XMLPrésentation de XML XML (entendez eXtensible Markup Language et traduisez Langage à balises étendu, ou Langage à balises extensible) est en quelque sorte un langage HTML amélioré permettant de définir de nouvelles balises. Il s'agit effectivement... www.commentcamarche.net/contents/xml/xmlintro.php3