Simple Parsing d'un document XML (non validant)

Programme

// Analyse0.java

import java.io.*;
import org.xml.sax.*;
import org.xml.sax.helpers.DefaultHandler;
import javax.xml.parsers.SAXParserFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParser;
// et une tartine de classe !

public class Analyse0 {
  public static void main (String argv[])
  throws IOException {
    if (argv.length != 1) {
      System.err.println 
        ("Usage: Analyse0 fichierSource");
      System.exit (1);
    }
    DefaultHandler handler = new DefaultHandler();
    // le handler réalise les traitements 
    // pendant le parsing
    // içi : celui par defaut qui ne fait rien
    SAXParserFactory factory = 
                   SAXParserFactory.newInstance();
    // une "factory" (configurateur) de parseur
    // içi : celui par defaut
    try {
      SAXParser saxParser = factory.newSAXParser();
      // obtenir un parseur ("compilateur") XML
      saxParser.parse( new File(argv[0]), handler );
      // parser (compiler) le fichier en réalisant
      // les traiements indiqués
    } catch (Throwable t) {
      t.printStackTrace ();
    }
    System.exit (0);
  }
}

commandes et résultats

$ javac -classpath .:/usr/local/jaxp-1.1/jaxp.jar:
/usr/local/jaxp-1.1/crimson.jar:
/usr/local/jaxp-1.1/xalan.jar Analyse0.java 
indiquer le chemin d'accès aux packages "XML" de sun (la version JAXP 1.1)
INUTILE dans le JDK 1.4
$ java -classpath .:/usr/local/jaxp-1.1/jaxp.jar:
/usr/local/jaxp-1.1/crimson.jar:
/usr/local/jaxp-1.1/xalan.jar Analyse0 dialogue2.xml  
$

un document mal formé

fichier dialogue1err1.xml :
 

<?xml version='1.0' encoding='ISO-8859-1'  ?>
<!-- fichier dialogue1err1.xml -->
<dialogue>
<situation>acte I, Scene 1 : madame pernelle et flipote sa servante,elmire, mariane, dorine, damis, cléante.</situation>
<!-- erreur -->
</replique>
<personnage>madame pernelle</personnage>
<texte>Allons, Flipote, allons, que d'eux je ......

parsing :

$ CLASSPATH=.:/usr/local/jaxp-1.1/jaxp.jar:
/usr/local/jaxp-1.1/crimson.jar:
/usr/local/jaxp-1.1/xalan.jar
évite l'option pénible et répétitive -classpath
INUTILE dans le JDK 1.4
$ java Analyse0 dialogue1err1.xml
org.xml.sax.SAXParseException: org.apache.crimson.parser/P-034 dialogue 5
at org.apache.crimson.parser.Parser2.fatal(Parser2.java:3035)
at org.apache.crimson.parser.Parser2.fatal(Parser2.java:3029)
at org.apache.crimson.parser.Parser2.maybeElement(Parser2.java, Compiled Code)
at org.apache.crimson.parser.Parser2.parseInternal(Parser2.java:499)
at org.apache.crimson.parser.Parser2.parse(Parser2.java:304)
at org.apache.crimson.parser.XMLReaderImpl.parse(XMLReaderImpl.java:433)
at javax.xml.parsers.SAXParser.parse(SAXParser.java:346)
at javax.xml.parsers.SAXParser.parse(SAXParser.java:286)
at Analyse0.main(Analyse0.java:25)
 

 

 

 index  suivant