Question newbie : Quelle différence entre SAX et DOM
2 réponses
Bernard Koninckx
Bonjour à tous,
Je souhaite savoir quelles sont les différences significatives entre les
librairies SAX et DOM. Quels sont leurs domaines d'applications respectifs ?
Dans quel cas utiliser l'une plus tôt que l'autre ?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
jerome moliere
Bernard Koninckx wrote:
Bonjour à tous,
Je souhaite savoir quelles sont les différences significatives entre les librairies SAX et DOM. Quels sont leurs domaines d'applications respectifs ? Dans quel cas utiliser l'une plus tôt que l'autre ? DOM propose un representation (intuitive) d'un document XML sous forme
d'un arbre...il a donc besoin de monter en memoire tout un document même si tu n'a sbesoin que du titre SAX utilises un systeme de callbakcs pour informer le codeur de certains evenements (nouvel element, fin d'element etc..) la premiere est simple et facile a coder la seconde est chiante mais puissante tu ne peux traiter de gros documents avec DOM avec SAX aucunb souci (au dessus de qq Mo il faut jeter DOM)
Jerome
-- Auteur cahier du programmeur Java tome 2 - Eyrolles 10/2003 http://www.eyrolles.com/php.informatique/Ouvrages/ouvrage.php3?ouv_ean1382212111941
Bernard Koninckx wrote:
Bonjour à tous,
Je souhaite savoir quelles sont les différences significatives entre les
librairies SAX et DOM. Quels sont leurs domaines d'applications respectifs ?
Dans quel cas utiliser l'une plus tôt que l'autre ?
DOM propose un representation (intuitive) d'un document XML sous forme
d'un arbre...il a donc besoin de monter en memoire tout un document même
si tu n'a sbesoin que du titre
SAX utilises un systeme de callbakcs pour informer le codeur de certains
evenements (nouvel element, fin d'element etc..)
la premiere est simple et facile a coder
la seconde est chiante mais puissante
tu ne peux traiter de gros documents avec DOM avec SAX aucunb souci (au
dessus de qq Mo il faut jeter DOM)
Jerome
--
Auteur cahier du programmeur Java tome 2 - Eyrolles 10/2003
http://www.eyrolles.com/php.informatique/Ouvrages/ouvrage.php3?ouv_ean1382212111941
Je souhaite savoir quelles sont les différences significatives entre les librairies SAX et DOM. Quels sont leurs domaines d'applications respectifs ? Dans quel cas utiliser l'une plus tôt que l'autre ? DOM propose un representation (intuitive) d'un document XML sous forme
d'un arbre...il a donc besoin de monter en memoire tout un document même si tu n'a sbesoin que du titre SAX utilises un systeme de callbakcs pour informer le codeur de certains evenements (nouvel element, fin d'element etc..) la premiere est simple et facile a coder la seconde est chiante mais puissante tu ne peux traiter de gros documents avec DOM avec SAX aucunb souci (au dessus de qq Mo il faut jeter DOM)
Jerome
-- Auteur cahier du programmeur Java tome 2 - Eyrolles 10/2003 http://www.eyrolles.com/php.informatique/Ouvrages/ouvrage.php3?ouv_ean1382212111941
Vincent BERSIN
[Attention : ceci est ce que j'ai compris de SAX et DOM, je n'y ai pas passé non plus 1000 heures ... ;o)]
DOM propose un representation (intuitive) d'un document XML sous forme d'un arbre...il a donc besoin de monter en memoire tout un document même si tu n'a sbesoin que du titre SAX utilises un systeme de callbakcs pour informer le codeur de certains evenements (nouvel element, fin d'element etc..)
vrai ! DOM construit un arbre qui est manipulable, ie on peut modifier des noeuds, des champs etc .. on peut facilement récupérer des valeurs SAX est complètement séquentiel : il n' a pas de notion d'architecture, et est donc extrèmement rapide ; mais il ne garde rien en mémoire
par ex si tu as <a> <b>heho</b> <c>tu</c> </a>
SAX va te mettre qqch du genre : noeud trouvé : <a> noeud trouvé : <b> valeur trouvée : heho noeud trouvé : </b> noeud trouvé : <c> valeur trouvée : tu noeud trouvé : </c> noeud trouvé : </a>
par contre, il sera incapable de te dire que "heho" est la valeur comprise entre <b> et </b> ce sera à toi de la faire, notamment en utilisant des booléens
à l'inverse, DOM dira : <a> |___ <b> : valeur : heho : </b> |___ <c> : valeur : tu : </c> </a>
c'est très schématique, et c'est aussi ce que j'en ai compris ! :o) <-- prémunissons nous des critiques ;o)
je te mettrais des liens qd je reviendrais chez moi, je les ai pas au boulot ....... désolé
la premiere est simple et facile a coder la seconde est chiante mais puissante
en effet, DOM est plus simple que SAX car SAX t'oblige à reconnaitre toi même que tu es "entré" ds une balise
tu ne peux traiter de gros documents avec DOM avec SAX aucun souci (au dessus de qq Mo il faut jeter DOM)
DOM charge tout en RAM ...., SAX rien du tout
PS : [légèrement HS] en utilisant xercès pour valider des docs, si xercès ne trouve pas ta DTD ou ton schéma, il considère ton xml comme valide ... OUPS !
[Attention : ceci est ce que j'ai compris de SAX et DOM, je n'y ai pas passé
non plus 1000 heures ... ;o)]
DOM propose un representation (intuitive) d'un document XML sous forme
d'un arbre...il a donc besoin de monter en memoire tout un document même
si tu n'a sbesoin que du titre
SAX utilises un systeme de callbakcs pour informer le codeur de certains
evenements (nouvel element, fin d'element etc..)
vrai !
DOM construit un arbre qui est manipulable, ie on peut modifier des noeuds,
des champs etc .. on peut facilement récupérer des valeurs
SAX est complètement séquentiel : il n' a pas de notion d'architecture, et
est donc extrèmement rapide ; mais il ne garde rien en mémoire
par ex si tu as
<a>
<b>heho</b>
<c>tu</c>
</a>
SAX va te mettre qqch du genre :
noeud trouvé : <a>
noeud trouvé : <b>
valeur trouvée : heho
noeud trouvé : </b>
noeud trouvé : <c>
valeur trouvée : tu
noeud trouvé : </c>
noeud trouvé : </a>
par contre, il sera incapable de te dire que "heho" est la valeur comprise
entre <b> et </b>
ce sera à toi de la faire, notamment en utilisant des booléens
à l'inverse, DOM dira :
<a>
|___ <b> : valeur : heho : </b>
|___ <c> : valeur : tu : </c>
</a>
c'est très schématique, et c'est aussi ce que j'en ai compris ! :o) <--
prémunissons nous des critiques ;o)
je te mettrais des liens qd je reviendrais chez moi, je les ai pas au boulot
....... désolé
la premiere est simple et facile a coder
la seconde est chiante mais puissante
en effet, DOM est plus simple que SAX car SAX t'oblige à reconnaitre toi
même que tu es "entré" ds une balise
tu ne peux traiter de gros documents avec DOM avec SAX aucun souci (au
dessus de qq Mo il faut jeter DOM)
DOM charge tout en RAM ...., SAX rien du tout
PS : [légèrement HS] en utilisant xercès pour valider des docs, si xercès ne
trouve pas ta DTD ou ton schéma, il considère ton xml comme valide ... OUPS
!
[Attention : ceci est ce que j'ai compris de SAX et DOM, je n'y ai pas passé non plus 1000 heures ... ;o)]
DOM propose un representation (intuitive) d'un document XML sous forme d'un arbre...il a donc besoin de monter en memoire tout un document même si tu n'a sbesoin que du titre SAX utilises un systeme de callbakcs pour informer le codeur de certains evenements (nouvel element, fin d'element etc..)
vrai ! DOM construit un arbre qui est manipulable, ie on peut modifier des noeuds, des champs etc .. on peut facilement récupérer des valeurs SAX est complètement séquentiel : il n' a pas de notion d'architecture, et est donc extrèmement rapide ; mais il ne garde rien en mémoire
par ex si tu as <a> <b>heho</b> <c>tu</c> </a>
SAX va te mettre qqch du genre : noeud trouvé : <a> noeud trouvé : <b> valeur trouvée : heho noeud trouvé : </b> noeud trouvé : <c> valeur trouvée : tu noeud trouvé : </c> noeud trouvé : </a>
par contre, il sera incapable de te dire que "heho" est la valeur comprise entre <b> et </b> ce sera à toi de la faire, notamment en utilisant des booléens
à l'inverse, DOM dira : <a> |___ <b> : valeur : heho : </b> |___ <c> : valeur : tu : </c> </a>
c'est très schématique, et c'est aussi ce que j'en ai compris ! :o) <-- prémunissons nous des critiques ;o)
je te mettrais des liens qd je reviendrais chez moi, je les ai pas au boulot ....... désolé
la premiere est simple et facile a coder la seconde est chiante mais puissante
en effet, DOM est plus simple que SAX car SAX t'oblige à reconnaitre toi même que tu es "entré" ds une balise
tu ne peux traiter de gros documents avec DOM avec SAX aucun souci (au dessus de qq Mo il faut jeter DOM)
DOM charge tout en RAM ...., SAX rien du tout
PS : [légèrement HS] en utilisant xercès pour valider des docs, si xercès ne trouve pas ta DTD ou ton schéma, il considère ton xml comme valide ... OUPS !