Formation M2i - Femmes entrepreneures : soyez actrices du changement
Difference Between DOM and SAX parser in java with examples
1. Manipulation des fichiers XML avec
les API Java : DOM et SAX
L’Agence Nationale de Réglementation des Télécommunications
L'Institut National des Postes et Télécommunications
Réalisé par :
Said BENAISSA
Mohamed BOURRICH
2. plan
• introduction
• Notion de parseur
• Parseur SAX
• Parseur DOM
• Applications
• conclusion
13/12/2013
projet xml
DOM et SAX
2
4. Notion de parseur
Parseur SAX
Applications
DOM
SAX
utilise les événements pour
analyser et exploiter les
documents au format XML
13/12/2013
Parseur DOM
consiste à la construction d'un
modèle objet en mémoire
projet xml
DOM et SAX
4
5. Notion de parseur
Parseur SAX
Parseur DOM
Applications
les avantages de SAX
• peu gourmand en ressources mémoire
• rapide
• principes faciles à mettre en œuvre
• permet de ne traiter que les données utiles
les inconvénients de SAX
• traite les données séquentiellement
• un peu plus difficile à programmer,
• sauvegarder les informations pour les traiter
13/12/2013
projet xml
DOM et SAX
5
6. Notion de parseur
Parseur SAX
Parseur DOM
Applications
les avantages de DOM
• parcours libre de l'arbre
• possibilité de modifier la structure et le contenu de l'arbre
les inconvénients de DOM
• gourmand en mémoire
• doit traiter tout le document avant d'exploiter les résultats
13/12/2013
projet xml
DOM et SAX
6
7. Les implémentations du W3C
Notion de parseur
13/12/2013
Parseur SAX
Parseur DOM
Applications
Xerces, implémentation de SAX et DOM de l’ASF
(Apache Software Fondation)
JDom, qui est une implémentation alternative
Dom4J, qui implémente également SAX, DOM et XSL
projet xml
DOM et SAX
7
8. Notion de parseur
Parseur SAX
Parseur DOM
Applications
Java API for XML
Processing: JAXP
API indépendante de tout
fournisseur
Unification des approches
SAX & DOM
Packages :
Exceptions :
javax.xml.parsers
javax.xml.transform
FactoryConfigurationError
org.w3c.dom
ParserConfigurationException
org.xml.sax
13/12/2013
projet xml
DOM et SAX
8
9. Notion de parseur
Parseur SAX
Parseur DOM
Applications
Gestion du contenu :ContentHandler
Gestion des erreurs :ErrorHandler
Lire le
document et
reconnaitre les
structures
(balise,attribut)
Gestions de la DTD : DTDHandler
Gestion des entités : EntityResolver
Les 4 interfaces
sont implémentées
par :
DefaultHandler
13/12/2013
projet xml
DOM et SAX
9
10. Gestion des
contenus:ContentHandler
Notion de parseur
13/12/2013
Parseur SAX
Parseur DOM
Applications
startDocument();endDocument()
startElement(String uri, String sName,
String qName, Attributes atts)
characters(char[] ch,int start,int length)
projet xml
DOM et SAX
10
11. Notion de parseur
Parseur SAX
Balise ouvrante
endElement()
Parseur DOM
production
d’un
événement
<contact id="3">
<nom> nom </nom>
</contact>
production
d’un
événement
Characteres()
13/12/2013
production
d’un
événement
projet xml
DOM et SAX
Applications
startElement()
un tableau
associatif pour
les attributs
Chine de
caractères
Chaine de
caractères
11
12. Gestion des erreurs :
errorHandler
Notion de parseur
13/12/2013
Parseur SAX
Parseur DOM
Applications
les erreurs simples : error()
les erreurs fatales : fatalError()
les alertes : warning()
projet xml
DOM et SAX
12
13. Notion de parseur
Parseur SAX
Parseur DOM
Applications
Autres interfaces :
Gestion
de la DTD
Données
lexicales
13/12/2013
• EntityResolver :gestion des entités
• LexicalHandler : avoir accès aux données
de type DTD et CDATA
projet xml
DOM et SAX
13
14. Notion de parseur
Parseur SAX
Parseur DOM
Applications
Ce qui donne
un document
Créer un
document
Builder
instence
DocumentBuilder
Factory
13/12/2013
projet xml
DOM et SAX
14
15. Notion de parseur
Parseur SAX
Parseur DOM
Applications
Les interfaces du package org.w3c.dom:
13/12/2013
projet xml
DOM et SAX
15
16. Notion de parseur
Parseur SAX
Parseur DOM
Applications
La classe : Node
Constantes : Element_Node=1; pour typer le nœud courant
getLocalName(index), getNameSpaceURI(), getNodeName()
getAttributes(), hasAttributes().
getNodeName(), getNodeType(), getNodeValue(),setNodeVa
lue().
Node getFirstChild(), removeChild(Node),replaceChild(Node
new, Node old),
13/12/2013
projet xml
DOM et SAX
16
17. Notion de parseur
Parseur SAX
Parseur DOM
Applications
Parcoure d’un arbre
13/12/2013
projet xml
DOM et SAX
17
18. Notion de parseur
Parseur SAX
Parseur DOM
Applications
Modification d’un arbre
13/12/2013
projet xml
DOM et SAX
18
19. Notion de parseur
Parseur SAX
Parseur DOM
Applications
La classe : Element
getTagName()
getElementsByTagName()
getAttribute(), getAttributeNode()
removeAttribute(String), removeAttributeNode(Attr)
13/12/2013
projet xml
DOM et SAX
19
20. Notion de parseur
Parseur SAX
Parseur DOM
Applications
Les autres classes
La classe Attr : getName() , getValue(), setValue(String)
La classe Entity : getNotationName()
La classe Document : getDocumentElement() ,
getElementsByTagName(String)
La classe Comment
La classe NodeListe : fournir une liste ordonnée : NodeList fils =
n.getChildNodes();
13/12/2013
projet xml
DOM et SAX
20
21. Notion de parseur
Parseur SAX
Parseur DOM
Applications
Validation d’un document xml
Gestion d’un emploi du temps
13/12/2013
projet xml
DOM et SAX
21
22. Notion de parseur
Parseur SAX
Parseur DOM
Applications
Validation d’un document xml
Méthode de validation par DOM
• DF.setValidating(true);
• DF.setAttribute(JAXP_SCHEMA_LANGUAGE,W3C_XML_SCHEMA);
• DF.setAttribute(JAXP_SCHEMA_SOURCE,”fichier.xsd”) ;
Méthode de validation par SAX
• SF.setValidating(true);
• SP = SF.newSAXParser();
• SP.setProperty(JAXP_SCHEMA_LANGUAGE, W3C_XML_SCHEMA);
• SP.setProperty(JAXP_SCHEMA_SOURCE,”fichier.xsd”);
13/12/2013
projet xml
DOM et SAX
22
23. Notion de parseur
Parseur SAX
Parseur DOM
Applications
Validation d’un document xml
13/12/2013
projet xml
DOM et SAX
23
24. Notion de parseur
Parseur SAX
Parseur DOM
Applications
Validation d’un document xml
13/12/2013
projet xml
DOM et SAX
24
25. Notion de parseur
Parseur SAX
Parseur DOM
Applications
gestion d’un emploi du temps
13/12/2013
projet xml
DOM et SAX
25
26. Notion de parseur
Parseur SAX
Parseur DOM
Applications
gestion d’un emploi du temps
13/12/2013
projet xml
DOM et SAX
26
27. Conclusion
Accès au information d’un xml par DOM et
SAX
SAX est simple et peut gourmande en
mémoire mais DOM offre plus de
fonctionnalités
SAX et DON sont complémentaires
Deux applications illustrant l’utilisation de
DOM et SAX
13/12/2013
projet xml
DOM et SAX
27