Initialisation d'une méthode java à partir d'un xml

arno83
Initialisation d'une méthode java à partir d'un xml

Bonjour à tous,

Pour ma boîte je dois réaliser un petit programme qui me permet d'initialiser une classe java à partir d'un fichier xml (pour externaliser son paramétrage).

J'utilise Castor qui se base sur Sax, il devrait répondre à mes besoins.

J'ai avancer sur la structure du xml et son schema xsd

<?xml version="1.0" encoding="UTF-8"?>
<cat:parametres 
	xmlns:cat="http://www.w3schools.com" 
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xsi:schemaLocation="http://www.w3schools.com schema_parametre.xsd ">
  <cat:plage dateDebut="2000-01-01" dateFin="2000-09-01">
    <cat:property name="ancPzero" value="10" type="int"/>
    <cat:property name="plafondP2" value="33" type="int"/>
  </cat:plage>
</cat:parametres>

J'aimerais que maintenant, au démarrage de l'appli il initialise ma classe paramètres en appelant les getter et les setters passés dans l'élément grâce à l'attribut "name" qui est l'attribut de mon objet java et l'initialise avec la valeur passé par l'attribut "value".

Pour l'instant, mon objet java ressemble à ça :

public class Parametres {
private Date dateDebut;
private Date dateFin;
private int ancPzero;
private int plafondP2;
 
//getters et setters
}

Est ce qu'il va s'en sortir pour faire un setDateDebut="2001-01-01", un setAncPzero="10" etc etc ??? sans fichier de mapping ??

Merci de votre aide
Arnaud

thesuixx

je sais pas si ca repond à ta question, mais moi j'utilise ca :

la methode pour deserialiser:

import java.beans.XMLDecoder;
...
...
/**
     * deserialise un objet contenue dans un fichier XML, dont le path et nom est donn�e
     *@param nomFicXML : path du fichier XML a correspondant a une serialisation
     *@return l'objet issue de la deserialisation
     */
    public static Object deserialisationXML(String nomFicXML){
        Object objSer = new Object();
        // deserialisation pour recuperer les valeurs de configuration
        if (nomFicXML != null){                              // post condition
            try {
                XMLDecoder d = new XMLDecoder(
                                  new BufferedInputStream(
                                      new FileInputStream(nomFicXML)));
               objSer = d.readObject();
               d.close();
            }
            catch (java.io.IOException e) {
              e.printStackTrace();
            }
        }
        return objSer;
    }

la classe que je veux instancier:
public class parametre {

String paramUn;
String paramDeux;

// constructeur avec toutes tes variables
public parametre(String paramUn, String paramDeux){
this.paramUn = paramUn;
this.paramDeux = paramDeux;
}

// liste d'accesseurs + mutateurs pour toutes tes variables

}

le fichier Xml:
<?xml version="1.0" encoding="UTF-8"?> 
<java version="1.5.0_08" class="java.beans.XMLDecoder"> 
 <object class="parametre"> 
  <void property="paramUn"> 
   <string>valeur de la variable paramUn</string> 
  </void> 
  <void property="paramDeux"> 
   <string>valeur de la variable paramDeux</string> 
  </void> 
</object> 
</java> 

l'appel de la fonction:
parametre param = (parametre) deserialisationXml("repertoire/fichier.extension);

J'espere que ca pourra te servir