 
SAX, DOM
 
Java est le “meilleur” langage pour XML
VB, C#, C, Perl, Python etc. également
support Unicode est complexe
SAX : Simple Api for Xml (dirigé par les
événements, un noeud à la fois)
DOM : Document Object Model (permet de
manipuler l’arbre en entier)

Standard W3C pour HTML et XML
Structure Objet pour représenter des documents
Résultat d’une analyse
Arbre d’objets liés
Interface pour naviguer à l’intérieur du document
OO
Peut être utilisée avec :
Java, C++
C#, VB
Python, PHP
DOM


 



 
(Python)4DOM
OracleSDK Oracle
MicrosoftMSXML
Apache (Java, C++)Xerces
DOM

<Guide>
<Restaurant id="R1"> The
best restaurant </Restaurant>
</Guide>



 





Root of the document
<Guide>
<Restaurant>
Id="R1"
The best restaurant
DOM

Navigation via un arbre
générique de noeuds
Node
NodeList (Parent/Child)
NamedNodeMap ProcessingInstruction
<?xml:stylesheet ...>
DocumentType
<!DOCTYPE ...>
Element
<Restaurant ....>
....
Document
Child
DOM
Text
The best restaurant
Node
!"#$"%
Element getDocumentElement()
Permet un accès direct au noeud fils qui est la racine du
document.
NodeList getElementsByTagName(String tagname)
Retourne un NodeList de tous les Elements d’une balise donnée
dans l’ordre qu’ils sont rencontrés selon un parcours en préordre
de l’arbre.
DOM
!"#$"%&
NamedNodeMap getAttributes()
NamedNodeMap contient les attributs de ce noeud (si c’est un Element) ou null
autrement.
NodeList getChildNodes()
NodeList qui contient tous les fils du noeud.
Node getFirstChild()
Le premier fils du noeud.
Node getLastChild()
Le dernier fils du noeud.
Node getParentNode()
Le parent du noeud.
boolean hasAttributes()
Retourne vrai si le noeud (si c’est un élément) a des attributs.
boolean hasChildNodes()
Retourne vrai si le noeud a des fils.
DOM
'
Une interface objet standard
Navigation
Traitement spécifique
Problèmes de performance
mémoire
Le traitement est après l’analyse
DOM
()
)
SAX
SAX (Simple API for XML)
Modèle simple basé sur les événements
Types d’événements
début et fin du document
attributs, texte, … .
Différents parsers
XP, James Clark, Aelfred, Saxon
MSXML3, Microsoft
Xerces, Apache
JAXP, SUN
 
 
startDocument
event
startElement
event
endDocument
event

XML
Stream

 
!"
SAX
#$
XMLReader
setContentHandler
setErrrorHandler
parse
ContentHandler
startDocument
endDocument
startElement
endElement
characters
ErrorHandler
fatalError
error
warning
SAX
)
Document en entrée
<ADDRESS>
<NUMBER> 9 </NUMBER>
<STREET>Charles Fourier</STREET>
<CITY>Evry</CITY>
<ZIPCODE>91011</ZIPCODE>
</ADDRESS>
Sortie à imprimer
Begin root element : ADDRESS
Opening tag : NUMBER
Ending tag : NUMBER
Opening tag : STREET
Ending tag : STREET
...
*+,)
import org.xml.SAX.HandlerBase;
import org.xml.SAX.AttributeList;
public class MonHandler extends HandlerBase {
public void startElement (String name, AttributeList atts) {
System.out.println(« Opening tag : "+name);
}
public void endElement (String name) {
System.out.println(« Ending tag : "+name);
}
}
*+,)
import org.xml.SAX.Parser;
import org.xml.SAX.DocumentHandler;
import org.xml.SAX.helpers.ParserFactory;
public class MyApp {
static final String parserClass ="foo.bar.XML.SAXDriver";
public static void main (String args[]) throws Exception {
// parser creation
Parser parser = ParserFactory.makeParser(parserClass);
// handler creation
DocumentHandler handler= new MonHandler();
// handler recording
parser.setDocumentHandler(handler);
// document is processed
for (int i= 0;i <args.length; i++) { parser.parse(args[i]); }
}
}
+)
DOM utilise SAX pour construire l’arbre d’un
document XML
SAX (Simple API for XML)
API dirigée par les événements
Envoie les événements à l’application au fur et à
mesure de la lecture du document
Adaptée pour de gros documents et des
dispositifs à mémoire contrainte
DOM (Document Object Model)
Lit le document en entier en mémoire sous forme
d’arbre
Adapté lorsque l’on veut modifier le document ou
faire des manipulations complexes
SAX ne se souvient pas des événements
antérieurs (sauf programmation explicite)
SAX
1 / 5 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !