package Sax2; import org.xml.sax.Attributes; import org.xml.sax.ContentHandler; import org.xml.sax.ErrorHandler; import org.xml.sax.Locator; import org.xml.sax.SAXParseException; import org.xml.sax.XMLReader; public class DocumentPrinter implements ContentHandler, ErrorHandler { private static final String PARSER_NAME = "com.ibm.xml.parsers.SAXParser"; public DocumentPrinter() { } public static void main(String[] args) { if (args.length == 0) { System.out.println("Pas de chemin de document XML spécifié."); System.exit(1); } DocumentPrinter dp = new DocumentPrinter(); XMLReader parser ; try { parser = (XMLReader)Class.forName(PARSER_NAME).newInstance(); parser.setContentHandler(dp); parser.setErrorHandler(dp); parser.parse(args[0]); } // C'est normalement une mauvaise idée que de capturer ainsi des exceptions génériques. catch (Exception ex) { System.out.println(ex.getMessage()); ex.printStackTrace(); } } public void characters(char[] ch, int start, int length) { String chars = ""; for (int i = start; i < start + length; i++) chars = chars + ch[i]; if ((chars.trim()).length() > 0) System.out.println("Caractères reçus : " + chars); } public void startDocument() { System.out.println("Début du document."); } public void endDocument() { System.out.println("Fin du document atteinte."); } public void startElement(String namespaceURI, String localName, String qName, Attributes atts) { System.out.println("Début d'élément: " + localName); } public void endElement(String namespaceURI, String localName, String qName) { System.out.println("Fin d'élément : " + localName); } public void startPrefixMapping(String prefix, String uri) { System.out.println("Correspondance de préfixe : " + prefix); System.out.println("URI: " + uri); } public void endPrefixMapping(String prefix) { System.out.println("Fin de de la correspondance de préfixe : " + prefix); } public void ignorableWhitespace(char[] ch, int start, int length) { System.out.println("Esapce vierge reçu."); } public void processingInstruction(String target, String data) { System.out.println("Instruction de traitement recue :"); System.out.println("Cible : " + target); System.out.println("Donnée : " + data); } public void setDocumentLocator(Locator locator) { } public void skippedEntity(String name) { System.out.println("Entité sautée : " + name); } public void error(SAXParseException exception) { } public void fatalError(SAXParseException exception) { } public void warning(SAXParseException exception) { } }