Télécharger la présentation
La présentation est en train de télécharger. S'il vous plaît, attendez
Publié parTristram Tanguy Modifié depuis plus de 11 années
1
SAX Simple API for XML
2
Généralités API non standard développé par les membres du forum XML-DEV Parseur XML – Orienté événement – Parsing dynamique SAX existe en Java, Python et C++
3
SAX Principe de Fonctionnement XML Internet Fichier APPLICATIONS
4
SAX aujourdhui Debut des travaux Dec, 1997 SAX 1.0 Mai, 1998 – Tim Bray – David Megginson – … SAX 2.0 Mai, 2000
5
SAX 2.0 Interfaces – XMLReader – ContentHandler – DTDHandler – ErrorHandler – … Classes – InputSource Exceptions – SAXException – …
6
org.xml.sax.XMLReader Classe implantée par tout parser SAX Méthodes – public void setContentHandler(ContentHandler handler) – public void setDTDHandler(DTDHandler handler) – public void setErrorHandler(ErrorHandler handler) – public void parse(InputSource input) throws java.io.IOException, SAXException – …
7
org.xml.sax.ContentHandler Handler le plus important. Toutes les applications SAX doivent implanter un ContentHandler Méthodes : – public void startDocument() throws SAXException – public void endDocument() throws SAXException – public void startElement(String nspURI, String localName, String qName, Attributes atts) throws SAXException – public void characters(char[] ch, int start, int length) throws SAXException – …
8
org.xml.sax.DTDHandler Handler utilisé pour avoir des informations sur les entitées non parsable. Méthodes : – public void notationDecl(String name, String publicId, String systemId) throws SAXException – public void unparsedEntityDecl(String name, String publicId, String systemId, String notationName) throws SAXException
9
org.xml.sax.ErrorHandler Handler utilisé pour effectuer un traitement lors dapparition derreurs. Méthodes : – public void warning(SAXParseException exception) throws SAXException – public void error(SAXParseException exception) throws SAXException – public void fatalError(SAXParseException exception) throws SAXException
10
org.xml.sax.EntityResolver Handler utilisé pour effectuer un traitement lors de la résolution dentité. Méthode : – public InputSource resolveEntity(String publicId, String systemId) throws SAXException, java.io.IOException
11
org.xml.sax.Attributes Liste dattributs Méthodes : – public int getLength() – public java.lang.String getLocalName(int index) – public java.lang.String getValue(int index) – …
12
org.xml.sax.Locator Utiliser pour connaître la position du parser dans le fichier Les parser SAX ne sont pas obligé de fournit un Locator Méthodes : – public int getColumnNumber() – public int getLineNumber() – …
13
org.xml.sax.InputSource Tout input XML doit être encapsulé dans un InputSource Méthodes : – public InputSource(java.io.Reader characterStream) – public InputSource(java.io.InputStream byteStream) – …
14
Exemple de Programme SAX package test; public class ContentTest extends org.xml.sax.helpers.DefaultHandler { org.xml.sax.Locator _locator; public void startDocument() {System.out.println("Le document commence");} public void endDocument() {System.out.println("Le document finit");} public void startElement(java.lang.String namespaceURI, java.lang.String localName,java.lang.String rawName, org.xml.sax.Attributes atts) throws org.xml.sax.SAXException { System.out.println("element : "+localName+" commence"+"col = « +_locator.getColumnNumber()+" ; line ="+_locator.getLineNumber() );} public void endElement(java.lang.String namespaceURI,java.lang.String localName, java.lang.String rawName, org.xml.sax.Attributes atts) throws org.xml.sax.SAXException { System.out.println("element : "+localName+" finit"); } public void setDocumentLocator(org.xml.sax.Locator locator) {_locator = locator;} }
15
Exemple de Programme SAX package test; public class DTDTest extends org.xml.sax.helpers.DefaultHandler { public void notationDecl(java.lang.String name, java.lang.String publicId, java.lang.String systemId) throws org.xml.sax.SAXException { System.out.println("Notation Declaration"); } public void unparsedEntityDecl(java.lang.String name, java.lang.String publicId, java.lang.String systemId, java.lang.String notationName) throws org.xml.sax.SAXException { System.out.println("Unparsed entity Decl"); }
16
Exemple de Programme SAX package test; public class EntityTest extends org.xml.sax.helpers.DefaultHandler { public org.xml.sax.InputSource resolveEntity(java.lang.String publicId, java.lang.String systemId) throws org.xml.sax.SAXException{ System.out.println("resolve an entity"); return null; }
17
Exemple de Programme SAX package test; public class ErrorTest extends org.xml.sax.helpers.DefaultHandler { public void warning(org.xml.sax.SAXParseException exception) throws org.xml.sax.SAXException { System.out.println("Got a Warning"); } public void error(org.xml.sax.SAXParseException exception) throws org.xml.sax.SAXException { System.out.println("Got an Error"); } public void fatalError(org.xml.sax.SAXParseException exception) throws org.xml.sax.SAXException { System.out.println("Got a fatal Error"); }
18
Exemple de programme SAX package test; public class Parse { public static void main(String[] args) { try { org.xml.sax.XMLReader parser = (org.xml.sax.XMLReader)Class.forName(« org.apache.xerces.parsers.SAXParser").newInstance(); ContentTest _content = new ContentTest(); _content.setDocumentLocator(new org.xml.sax.helpers.LocatorImpl()); parser.setContentHandler(_content); parser.setErrorHandler(new ErrorTest()); parser.setEntityResolver(new EntityTest()); parser.setDTDHandler(new DTDTest()); parser.parse("UML.xml");} catch (org.xml.sax.SAXParseException spe) {spe.printStackTrace(System.err);} catch (org.xml.sax.SAXException se) {se.printStackTrace(System.err);} catch (Exception e) {e.printStackTrace(System.err);} }
19
Conclusion Type de Parser XML Standard « Internet » Orienté événement Utilisé par les serveurs Web
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.