1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107
|
package saxxml;
import org.xml.sax.*;
import org.xml.sax.helpers.*;
import javax.xml.parsers.*;
import java.io.*;
public class DocumentPrinter extends DefaultHandler implements ContentHandler, ErrorHandler {
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();
try{
// création d'une fabrique de parseurs SAX
SAXParserFactory fabrique = SAXParserFactory.newInstance();
// création d'un parseur SAX
SAXParser parseur = fabrique.newSAXParser();
// lecture d'un fichier XML avec un DefaultHandler
//File fichier = new File("vehicules.xml");args[0]
File fichier = new File(args[0]);
DefaultHandler gestionnaire = new DocumentPrinter();
parseur.parse(fichier, gestionnaire);
}catch(ParserConfigurationException pce){
System.out.println("Erreur de configuration du parseur");
System.out.println("Lors de l'appel à newSAXParser()");
}catch(SAXException se){
System.out.println("Erreur de parsing");
System.out.println("Lors de l'appel à parse()");
}catch(IOException ioe){
System.out.println("Erreur d'entrée/sortie");
System.out.println("Lors de l'appel à parse()");
}
}
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: " + qName);
}
public void endElement(String namespaceURI, String localName,
String qName) {
System.out.println("Fin d'élément : " + qName);
}
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) { }
} |