Partage
  • Partager sur Facebook
  • Partager sur Twitter

sérialisation XML en java Avec des Matrice ArrayList

    16 avril 2009 à 14:14:44

    Bonjour,

    je veut sauvegardé les élément de ma matrice "mat_val" dans un fichier xml.
    j'ai suivit la norme qui dit:

    * un constructeur sans paramètre ;
    * des méthodes d'accès aux données (set et get )


    Citation : CYann

    Si dans votre classe vous oubliez de mettre un getter ou un setter, l'attribut en question ne sera pas sauvegardé ! Cela vous permettra par exemple de choisir ce que vous voudrez sauvegarder... Une autre petite chose : pour utiliser la "sérialisation XML", la classe n'a pas obligatoirement besoin d'implémenter Serializable

    .

    Mais les élément ne son pas sauvegardé quand j'ouvre le fichier xml il est vide.
    le voila:

    <?xml version="1.0" encoding="UTF-8"?>
    <java version="1.6.0_0" class="java.beans.XMLDecoder">
     <object class="compdecomp_jpeg.Formule"/>
    </java>
    


    je ne comprenant pas pour quoi ?! :euh: si quelqu'un peu dire ce que je doit faire.
    viola le code:

    package compdecomp_jpeg;
    
    import java.beans.XMLEncoder;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.util.ArrayList;
    
    public class Formule {
        
      private transient static  ArrayList<ArrayList<Double>> qi = new ArrayList<ArrayList<Double>>(),
                                                   qj = new ArrayList<ArrayList<Double>>();  //Non je ne veut pas sérialisé
      //Déclaration de la 1 sur 64 matrice
      private static ArrayList<ArrayList<Double>> mat_val = new ArrayList<ArrayList<Double>>();
     
        public Formule() {
            
        double tpi=0; 
        for(int u=0; u < 8; u++)
        {  
         ArrayList<Double> tempi = new ArrayList<Double>();
         for(int i=0; i < 8; i++)
         {
          tpi= (((2 * (double)i +1) * (double)u * (22/ (double)7)) / (double)16);  
          tempi.add(tpi);   
         }
          qi.add(tempi);
        }
         /////////////////////////
        /////////////////////////
        double tpj=0; 
        for(int v=0; v < 8; v++)
        {   
         ArrayList<Double> tempj = new ArrayList<Double>();    
         for(int j = 0; j < 8; j++)
         {
          tpj = ( (2 * (double)j + 1) * (double)v * (22/ (double)7) / (double)16);   
          tempj.add(tpj);
         }
         qj.add(tempj);
        }
         /////////////////////////
        /////////////////////////
        }
       
       public void affiche_Mtrice(ArrayList<ArrayList<Double>> matrice) {
    	for (int i=0; i< matrice.size(); i++) {
    		for (int j=0; j< matrice.get(i).size(); j++) {
    			System.out.print("\t" + matrice.get(i).get(j));
    		}
    		System.out.println();
    	}
       }
       
       /* Accesseurs et mutateurs */
        public ArrayList<ArrayList<Double>> getMat_val() {
            return mat_val;
        }
        public void setMat_val(ArrayList<ArrayList<Double>> set_mat_val) {
            this.mat_val = set_mat_val;
        }
    
        
        public static void main(String[] args) throws FileNotFoundException {
        ////////////////    
        Formule qi_qj_calculer = new Formule();    
        /////////////// 
        double tmp =0;
     /*   for(int u=0; u < qi.size(); u++)
         { 
            for(int i=0; i < qi.get(u).size(); i++)
            {   */
              int u=0, i=0; //Appelle de fonction avec c'est paramétre 
              for(int v=0; v < qj.size(); v++)
              {    
                ArrayList<Double> tempv = new ArrayList<Double>();  
                for(int j=0; j < qj.get(v).size(); j++)
                { 
                  tmp = (Math.cos(qi.get(u).get(i)) * Math.cos(qj.get(v).get(j)));
                  tempv.add(tmp);  
                }
                mat_val.add(tempv); //C'est la que en ajout une ligne dans mat_val
              }
              //C'est la que l'on doit crée notre fichier xml(u,v) de la matrice mat_val
              System.out.println("\n");
              qi_qj_calculer.affiche_Mtrice(mat_val);
       /*    }
            System.out.println("\n");
         } */
        
          ///////////    	
    	XMLEncoder enc = new XMLEncoder(new FileOutputStream("fichier.xml"));
    	enc.writeObject(qi_qj_calculer);
    	enc.flush();
    	enc.close();
    
    
       }
    }
    


    Merci d'avance.
    • Partager sur Facebook
    • Partager sur Twitter
      16 avril 2009 à 14:19:49

      je connais pas la sérial xml mais le respect des conventions de codage si:

      maVariable

      getMaVariable()
      setMaVariable()

      Ce n'est peut être pas ça, mais tu peux toujours essayer. Attention aux majuscules
      • Partager sur Facebook
      • Partager sur Twitter
        16 avril 2009 à 14:37:07

        Citation : Alanis

        je connais pas la sérial xml mais le respect des conventions de codage si:

        maVariable

        getMaVariable()
        setMaVariable()

        Ce n'est peut être pas ça, mais tu peux toujours essayer. Attention aux majuscules



        merci je les est modifier en
        getMat_val()
        setMat_val()

        mais c'est la même chausse.

        bon:
        tu ne saurais pas comment NetBeans IDE 6.1 peu générés
        les Accesseurs et Mutateurs (les set et les get) o_O
        • Partager sur Facebook
        • Partager sur Twitter
          16 avril 2009 à 16:59:35

          C'est spécifier, il faut que ta classe respecte les convention Java Beans. Il te faut donc :

          - un constructeur par defaut (même si il est vide)
          - A chaque membre privé un setter et un getter

          C'est ce que tu a apparemment sur ton code...

          public void setMat_val(ArrayList<ArrayList<Double>> set_mat_val) {
                  this.mat_val = set_mat_val;
              }
          

          Je ne suis pas expert en ArrayList, mais la je ne crois pas que tu ajouter une valeur à ta liste... tu fait plutôt une affectation de référence, et ce n'est pas trop le but d'un setter... (à voir)

          • Partager sur Facebook
          • Partager sur Twitter
          Le développement de jeu vidéo vous intéresse ? Parlons en !
            17 avril 2009 à 16:25:06

            Bonjour, et Merci à tous pour vaux réponse.

            voila le début du résulta (sa marche pour la sérialisation vous aviez tous vrais. ^^ )

            biensur si il y'a des remarque ou des optimisation c'est avac
            plésire je n'atton que sa.

            voila le code:

            package compdecomp_jpeg;
            
            import java.util.ArrayList;
            
            public class Formule {
                
              public transient ArrayList<ArrayList<Double>> qi = new ArrayList<ArrayList<Double>>(),
                                                           qj = new ArrayList<ArrayList<Double>>();  //Non je ne veut pas sérialisé
              //Déclaration de la 1 sur 64 matrice
              private ArrayList<ArrayList<Double>> mat_val = new ArrayList<ArrayList<Double>>();
             
                public Formule() {
                    
                double tpi=0; 
                for(int u=0; u < 8; u++)
                {  
                 ArrayList<Double> tempi = new ArrayList<Double>();
                 for(int i=0; i < 8; i++)
                 {
                  tpi= (((2 * (double)i +1) * (double)u * (22/ (double)7)) / (double)16);  
                  tempi.add(tpi);   
                 }
                  qi.add(tempi);
                }
                 /////////////////////////
                /////////////////////////
                double tpj=0; 
                for(int v=0; v < 8; v++)
                {   
                 ArrayList<Double> tempj = new ArrayList<Double>();    
                 for(int j = 0; j < 8; j++)
                 {
                  tpj = ( (2 * (double)j + 1) * (double)v * (22/ (double)7) / (double)16);   
                  tempj.add(tpj);
                 }
                 qj.add(tempj);
                }
                 /////////////////////////
                /////////////////////////
                }
               
               public void affiche_Mtrice(ArrayList<ArrayList<Double>> matrice) {
            	for (int i=0; i< matrice.size(); i++) {
            		for (int j=0; j< matrice.get(i).size(); j++) {
            			System.out.print("\t" + matrice.get(i).get(j));
            		}
            		System.out.println();
            	}
               }
               
                public void affiche_Mtrice_class() {
            	for (int i=0; i< mat_val.size(); i++) {
            		for (int j=0; j< mat_val.get(i).size(); j++) {
            			System.out.print("\t" + mat_val.get(i).get(j));
            		}
            		System.out.println();
            	}
               }
               
               
               /* Accesseurs et mutateurs */
                public ArrayList<ArrayList<Double>> getMat_val() {
                    return mat_val;
                }
                public void setMat_val(ArrayList<ArrayList<Double>> mat_val) {
                    this.mat_val = mat_val;
                }
               /////////////////
                
            }
            


            package compdecomp_jpeg;
            
            import java.beans.XMLEncoder;
            import java.io.FileNotFoundException;
            import java.io.FileOutputStream;
            import java.util.ArrayList;
            
            public class Serialisation {
            
                   public static void main(String[] args) throws FileNotFoundException {
                ////////////////    
                Formule qi_qj_calculer = new Formule();    
                /////////////// 
                double tmp =0;
                for(int u=0; u < qi_qj_calculer.qi.size(); u++)
                 { 
                    for(int i=0; i < qi_qj_calculer.qi.get(u).size(); i++)
                    {   
                     // int u=0, i=0; //Appelle de fonction avec c'est paramétre 
                      for(int v=0; v < qi_qj_calculer.qj.size(); v++)
                      {    
                        ArrayList<Double> tempv = new ArrayList<Double>();  
                        for(int j=0; j < qi_qj_calculer.qj.get(v).size(); j++)
                        { 
                          tmp = (Math.cos(qi_qj_calculer.qi.get(u).get(i)) * Math.cos(qi_qj_calculer.qj.get(v).get(j)));
                          tempv.add(tmp);  
                        }
                        qi_qj_calculer.getMat_val().add(tempv); //C'est la que en ajout une ligne dans mat_val
                      }
                      //C'est la que l'on doit crée notre fichier xml(u,v) de la matrice mat_val
                      System.out.println("\n");
                      qi_qj_calculer.affiche_Mtrice(qi_qj_calculer.getMat_val()); System.out.println("\n");
                      
                    XMLEncoder enc = new XMLEncoder(new FileOutputStream("./Data/fichier_u="+u+"_i="+i+".xml"));  //On crée un nouvel objet de type XMLEncoder avec comme paramètre
            	enc.writeObject(qi_qj_calculer); //On "écrit" notre objet dans le fichier XML avec writeObject()
            	enc.flush();  //On vide le cache et force l'écriture
            	enc.close();  //On finit par fermer l'objet (on libère la mémoire)
                   }
                    System.out.println("\n");
                 }     
            
               }
                
            }
            


            package compdecomp_jpeg;
            
            import java.beans.XMLDecoder;
            import java.io.FileInputStream;
            import java.io.FileNotFoundException;
            
            public class Deserialisation {
            
                 public static void main(String[] args) throws FileNotFoundException {
                         /*
                 * Création d'un objet de type XMLEncoder avec comme paramètre un fichier... XML
                 * On crée une nouvelle personne grâce à la méthode readObject, n'oubliez pas le cast !
                 * readObject est une méthode (aussi appelée fonction car elle renvoie quelque chose), qui 
                 * renvoie un Object.
                 * On ferme notre objet XMLDecoder, car nous n'en avons plus besoin
                 * On affiche l'objet nouvellement créé ! Et le résultat est... conforme !	
                 */
               for(int u=0; u < 8; u++)  // ce n'est pas cérieux de fair 8
              { 
                for(int i=0; i < 8; i++)  //qi_qj_calculer.qi.get(u).size()
                {         
                XMLDecoder dec = new XMLDecoder(new FileInputStream("./Data/fichier_u=0_i=0.xml"));
                Formule qi_qj_calculer = (Formule) dec.readObject(); //Qui devindra en réaliter un AryaList
                dec.close();
                qi_qj_calculer.affiche_Mtrice_class();
                }
              }
               
              }
            }
            


            Merci d'avance. (à ne nouvelle Aventure :) )
            • Partager sur Facebook
            • Partager sur Twitter
              19 avril 2009 à 22:38:05

              Citation : bilred

              tu ne saurais pas comment NetBeans IDE 6.1 peu générés
              les Accesseurs et Mutateurs (les set et les get) o_O



              tu fais un clic droit à l'endroit où tu veux ces méthodes dans ton code, puis clic sur insert code ;)
              • Partager sur Facebook
              • Partager sur Twitter
                20 avril 2009 à 3:39:12

                A noter qu'avec la sérialisation XML je n'ai jamais réussi à faire apparaître des champs int initialisés à 0, alors que tous les autres marchaient bien.
                Enfin bon je ne suis plus dans ce projet donc je n'essaierai pas de savoir pourquoi.

                Un truc bizarre dans ton code, pourquoi faire un ArrayList qui contienne un ArrayList ? C'est par nature totalement incohérent. A moins que quelqu'un ait un argument à mon avis très pointu à me soumettre pour cela :)
                • Partager sur Facebook
                • Partager sur Twitter

                sérialisation XML en java Avec des Matrice ArrayList

                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                • Editeur
                • Markdown