
//
// Classes et interfaces de l'interface JAXP utilisée
//
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.FactoryConfigurationError;
import javax.xml.parsers.ParserConfigurationException;

//
// Exceptions possibles lors de la consommation du document XML
//
import org.xml.sax.SAXException;
import org.xml.sax.SAXParseException;

//
// Outils généraux d'entrée/ sortie sur des fichiers
//
import java.io.File;
import java.io.IOException;

//
// DOM et ses exceptions (du W3C)
//
import org.w3c.dom.Document;
import org.w3c.dom.DOMException;

//
// Notre petite classe
//
public class ConsommateurDOM {
   public static void main (String [] args) {
      if (args.length == 0) {
         System.err.println ("Usage: java ConommateurDOM fichierXML [fichierXML ...]");
      } else {
         for (String s : args) {
            ConsommateurDOM cd = new ConsommateurDOM ();
            cd.consommer (s);
         }
      }
   }

   //
   // L'attribut qui représentera le document sous DOM
   //
   private Document m_Document;

   public ConsommateurDOM () {
      m_Document = null;

   }
   public void consommer (String nomFich) {
      //
      // Un consommateur de document DOM se crée à travers une
      // fabrique (schéma de conception Factory)
      //
      DocumentBuilderFactory Fabrique = DocumentBuilderFactory.newInstance();
      try {
         DocumentBuilder Bâtisseur = Fabrique.newDocumentBuilder();
         m_Document = Bâtisseur.parse (new File(nomFich));
      } catch (SAXException sxe) {
         //
         // Erreurs de traitement du document
         //
         Exception ex =
            (sxe.getException() != null)? sxe.getException() : sxe;
         ex.printStackTrace();
      } catch (ParserConfigurationException pce) {
         //
         // Erreurs d'option de traitement
         //
         pce.printStackTrace();
      } catch (IOException ioe) {
         //
         // Erreurs générales d'entrée/ sortie
         //
         ioe.printStackTrace();
      }
   }
}