carb.view.ParsingEverything.java Source code

Java tutorial

Introduction

Here is the source code for carb.view.ParsingEverything.java

Source

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package carb.view;

import java.io.*;
import java.util.Arrays;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
import java.util.logging.Filter;
import java.util.logging.LogRecord;
import org.jdom2.*;
import org.jdom2.input.SAXBuilder;
import org.jdom2.output.*;

/**
 *
 * @author erwinandre
 */
public class ParsingEverything {

    /**
     * @param args the command line arguments
     */

    //Nous allons commencer notre arborescence en crant la racine XML
    //qui sera ici "personnes".
    static Element racine;

    //On cre un nouveau Document JDOM bas sur la racine que l'on vient de crer
    static org.jdom2.Document document;

    /* public static void main(String[] args) throws JDOMException
     {
         /*
        //On cre un nouvel Element etudiant et on l'ajoute
        //en tant qu'Element de racine
        Element etudiant = new Element("etudiant");
        racine.addContent(etudiant);
        
        //On cre un nouvel Attribut classe et on l'ajoute  etudiant
       //grce  la mthode setAttribute
        Attribute classe = new Attribute("classe","P2");
        etudiant.setAttribute(classe);
        
        //On cre un nouvel Element nom, on lui assigne du texte
        //et on l'ajoute en tant qu'Element de etudiant
        Element nom = new Element("nom");
        nom.setText("CynO");
        etudiant.addContent(nom);
        
        //Les deux mthodes qui suivent seront dfinies plus loin dans l'article
       // affiche();
        enregistre("Exercice1.xml");
            
            
        // Partie 2 
            
        //On cre?e une instance de SAXBuilder 
        System.out.println("Test");
        SAXBuilder sxb = new SAXBuilder(); 
        try {  //On cre?e un nouveau document JDOM avec en argument le fichier XML
     //Le parsing est termine? ;)
    document = sxb.build(new File("test2.xml")); 
        }
        catch(Exception e){}
        //On initialise un nouvel e?le?ment racine avec l'e?le?ment racine du document.
        racine = document.getRootElement();
        //Me?thode de?finie dans la partie 3.2. de cet article
       afficheALL();
            
            
            
     }*/

    //Ajouter ces deux mthodes  notre classe JDOM1
    static void affiche() {
        try {
            //On utilise ici un affichage classique avec getPrettyFormat()
            XMLOutputter sortie = new XMLOutputter(Format.getPrettyFormat());
            sortie.output(document, System.out);
        } catch (java.io.IOException e) {
        }
    }

    static void enregistre(String fichier) {
        try {
            //On utilise ici un affichage classique avec getPrettyFormat()
            XMLOutputter sortie = new XMLOutputter(Format.getPrettyFormat());
            //Remarquez qu'il suffit simplement de crer une instance de FileOutputStream
            //avec en argument le nom du fichier pour effectuer la srialisation.
            sortie.output(document, new FileOutputStream(fichier));
        } catch (java.io.IOException e) {
        }
    }

    static double afficheALL() throws DataConversionException {

        /* // test premiere solution
            
        //On cre?e une List contenant tous les noeuds "etudiant" de l'Element racine
             Element elementRoute = racine.getChild("route");
             System.out.println("Test /n");
             List legs = elementRoute.getChildren("leg");
             double distanceTotale = 0;
                 
             for(int i = 0;i < legs.size(); i++ ){
            
        Element legActuel = (Element)legs.get(i);
        List listeStep = legActuel.getChildren("step");
            
        for (int j = 0; j< listeStep.size();j++){
                
            Element stepUnique = (Element)listeStep.get(j);
                
                
                   
            String distanceTrouvee = stepUnique.getChild("distance").getChild("text").getText();
             //System.out.println("Test /n" + distanceTrouvee);
         // essai   String tmpstr = "radius: -0.118211 zone";
          /* String asd[] = distanceTrouvee.split(" ");
            double dist = Double.parseDouble(asd[1]);
            System.out.println(dist);
            distanceTotale += dist;
            System.out.println("Test /n" + distanceTotale);*/

        /*  String values[] = distanceTrouvee.split("\t");
          List<String> list = Arrays.asList(values);
          //Reverse the list so that longitude and latitude are the first two elements
          Collections.reverse(list);
            
          String distanceString = list.get(0);
          double distanceDouble = Double.parseDouble(distanceString);
              
          distanceTotale = distanceTotale + distanceDouble;
             
              
          System.out.println("Test" + j + " " + distanceTotale);
            
          }
        }
          */

        // deuxieme solution
        Element elementRow = racine.getChild("row");

        String distanceTrouveeString = elementRow.getChild("element").getChild("distance").getChild("value")
                .getText();
        double distanceDouble = Double.parseDouble(distanceTrouveeString);
        distanceDouble = distanceDouble / 1000;
        System.out.println("Distance trouvee :  " + distanceDouble + " KM ");
        return distanceDouble;

    }

    //Ajouter cette me?thodes a la classe JDOM2

    /*static void afficheFiltre(){
            
        // on cree un nouveau filtre
        Filter filtre = new Filter()
        {
        
    // on definit les proprits du filtre  l'aide de la mthode matches
    public boolean matches(Object ob)
    {
        // 1ere vrif on vrif que les objets filtrs sont des instances
        // de Element
        if(!(ob instanceof Element)){return false;}
            
        // on cree un element sur lequel on va faire les vrif
        Element element = (Element)ob;
        //On cre?e deux variables qui vont nous permettre de ve?rifier
        //les conditions de nom et de prenom
        int verifNom = 0;
        int verifPrenom = 0;
            
        //2 eme ve?rification: on ve?rifie que le nom est bien "CynO"
        if(element.getChild("nom").getTextTrim().equals("CynO")) 
        { 
            verifNom = 1;
        }
        //3 eme ve?rification: on ve?rifie que CynO possede un prenom "Laurent" //On commence par ve?rifier que la personne possede un prenom,
        //en effet notre fichier XML possede des e?tudiants sans pre?nom ! 
        Element prenoms = element.getChild("prenoms");
        if(prenoms == null){return false;}
        //On constitue une list avec tous les prenom
        List listprenom = prenoms.getChildren("prenom");
       //On effectue la ve?rification en parcourant notre liste de prenom //(voir: 3.1. Parcourir une arborescence)
       Iterator i = listprenom.iterator();
           
       while(i.hasNext())
       { 
           Element courant = (Element)i.next(); 
           if(courant.getText().equals("Laurent"))
           { 
            verifPrenom = 1; 
           }
       }
                //Si nos conditions sont remplies on retourne true, false sinon
       if(verifNom == 1 && verifPrenom == 1)
       { 
           return true;
       }
       return false; 
    }
        
    @Override
    public boolean isLoggable(LogRecord record) {
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }
        
               
        };
            
            
        List resultat;
        resultat = racine.getContent(filtre);
        Iterator i = resultat.iterator();
        while(i.hasNext()){
        
    Element courant = (Element)i.next();
    System.out.println(courant.getAttributeValue("classe"));
        
        
        
        }
            
    }
        
    */

}