/* Traduction d'un fichier Noms-Notes de texte à XML
   format 1 <eleve nom="Toto" note="12 />
   avec Javax standard.
*/

import org.w3c.dom.Document;
import org.w3c.dom.Element; 
import org.w3c.dom.NodeList; 

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory; 

import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;

import java.io.Writer;
import java.io.OutputStreamWriter;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.FileInputStream;
import java.io.InputStreamReader;

public class NNTxt2Xml {

// méthode de service - ici, méthode de classe
	public static void sortir (Document doc, Writer out) throws Exception {
		DOMSource src = new DOMSource(doc);
    	StreamResult res = new StreamResult(out);
    	Transformer trans = TransformerFactory.newInstance().newTransformer();
    	
		trans.transform(src, res);
	}
	
// la méthode principale (méthode de classe)---------------------------------------------

	public static Document lireText(BufferedReader entree) throws Exception {

		DocumentBuilder parseur = DocumentBuilderFactory.newInstance().newDocumentBuilder();
		Document listeNotes = 
			parseur.getDOMImplementation().createDocument(null, "liste", null);			
		Element liste = listeNotes.getDocumentElement();
			
		String ligne = entree.readLine();
        do {
			String[] lex = ligne.split("[ \t]+");
			// Attention à ne pas oublier la tabulation !
			String nom = lex[0];
			String note = lex[1].trim();
			
			Element el = listeNotes.createElement("eleve");
			liste.appendChild(el);
			el.setAttribute("nom", nom);
			el.setAttribute("note", note);
			
			ligne = entree.readLine();
        } while ( ligne != null );

		return listeNotes;
	}//lireText
       
// exécution (pour essais )--------------------------------------------------------------

    public static void main(String[] args) {
		if (args.length != 1) {
	    	System.out.println("Il me faut un nom de fichier !" );
		} else {		    
		    try {

				BufferedReader entree = 
					new BufferedReader ( 
						new InputStreamReader(
							new FileInputStream (args[0]), 
						"UTF-8") );
// mieux que	BufferedReader entree = new BufferedReader(new FileReader(args[0]));

	    		Document doc = lireText(entree);
		        Writer sortie = 
			               new OutputStreamWriter(System.out, "UTF-8");
                sortir(doc, sortie);
  
			} catch (Exception e) {
	    		System.out.println("Erreur "+ e.getMessage());
            }
        }
    } // main
}//NNTxt2Xml


