diff --git a/resources/Competences.xml b/resources/Competences.xml
index 592b95a6eb812f2c9b7abfa753287ad7a4d5231b..c3cd89eb3ead42817cb1aada866cdf72f176ec9d 100644
--- a/resources/Competences.xml
+++ b/resources/Competences.xml
@@ -3,49 +3,49 @@
 <Arbres>
 
   <Arbre id="S_MAGE">
-    <Competence_E1 id="S_MAGE_1" nom="Creer Mage">
-      <Competence_E2 id="S_MAGE_11" nom="Instinct de survie">
-        <Competence_E3 id="S_MAGE_111" nom="Echo">
-          <Competence_E4 id="S_MAGE_1111" nom="Glaçon vivant">
+    <Competence_E1 id="S_MAGE_1" nom="Creer Mage" prix="1">
+      <Competence_E2 id="S_MAGE_11" nom="Instinct de survie" prix="1">
+        <Competence_E3 id="S_MAGE_111" nom="Echo" prix="1">
+          <Competence_E4 id="S_MAGE_1111" nom="Glaçon vivant" prix="1">
           </Competence_E4>
         </Competence_E3>
-        <Competence_E3 id="S_MAGE_112" nom="Transfert">
+        <Competence_E3 id="S_MAGE_112" nom="Transfert" prix="1">
         </Competence_E3>
       </Competence_E2>
-      <Competence_E2 id="S_MAGE_12" nom="Accro au Mana">
-        <Competence_E3 id="S_MAGE_121" nom="Feu intérieur">
-          <Competence_E4 id="S_MAGE_1211" nom="Compte au Panama">
+      <Competence_E2 id="S_MAGE_12" nom="Accro au Mana" prix="1">
+        <Competence_E3 id="S_MAGE_121" nom="Feu intérieur" prix="1">
+          <Competence_E4 id="S_MAGE_1211" nom="Compte au Panama" prix="1">
           </Competence_E4>
-          <Competence_E4 id="S_MAGE_1212" nom="Cercle de feu">
+          <Competence_E4 id="S_MAGE_1212" nom="Cercle de feu" prix="1">
           </Competence_E4>
         </Competence_E3>
-        <Competence_E3 id="S_MAGE_122" nom="Plein aux as">
-          <Competence_E4 id="S_MAGE_1222" nom="Doublé gagnant">
+        <Competence_E3 id="S_MAGE_122" nom="Plein aux as" prix="1">
+          <Competence_E4 id="S_MAGE_1222" nom="Doublé gagnant" prix="1">
           </Competence_E4>
         </Competence_E3>
       </Competence_E2>
-  </Competence_E1>
-</Arbre>
+    </Competence_E1>
+  </Arbre>
 
-<Arbre id="S_WAR">
+  <Arbre id="S_WAR">
 
 
-</Arbre>
+  </Arbre>
 
-<Arbre id="S_HEAL">
+  <Arbre id="S_HEAL">
 
 
-</Arbre>
+  </Arbre>
 
-<Arbre id="S_ROGUE">
+  <Arbre id="S_ROGUE">
 
 
-</Arbre>
+  </Arbre>
 
-<Arbre id="S_ARCHER">
+  <Arbre id="S_ARCHER">
 
 
-</Arbre>
+  </Arbre>
 
 
 
diff --git a/src/competence.c b/src/competence.c
index 2e180f78f60fd7a5a10b769db79d6117a30f1c18..0e790742f92e95554d580619324a12dca1f1da49 100644
--- a/src/competence.c
+++ b/src/competence.c
@@ -1,8 +1,10 @@
 #include <stdio.h>
 #include <stdlib.h>
+#include <roxml.h>
 #include "structures.h"
 #include "competence.h"
 
+
 /*!
 * \file competence.c
 * \brief Fichier contenant le code des fonctions liees aux arbres de compétences.
@@ -22,13 +24,6 @@ typedef struct Competence{
 
 */
 
-/* Arbre manuel */
-Competence comp_1;
-Competence comp_11;
-Competence comp_12;
-Competence comp_111;
-Competence comp_112;
-Competence comp_121;
 
 /*!
  * \fn int set_Enfant(Competence *parent, Competence *enfant)
@@ -41,19 +36,30 @@ int set_Enfant(Competence *parent, Competence *nouvel_enfant)
     if(estVide(parent))
     {
         parent->enfant = nouvel_enfant;
-    }else{
+    }
+   /* else
+    {
         Competence *enfant = parent->enfant;
         while(enfant!=NULL)
         {
-            enfant = enfant->frere;       // A FINIR
+            enfant = enfant->frere;
         }
         enfant->frere = nouvel_enfant;
-
-    }
+    }*/
     return 0;
 }
 
 
+int set_comp_name(Competence *comp, char *nom_donne)
+{
+    strcpy(comp->nomComp, nom_donne);
+}
+
+int set_comp_id(Competence *comp, char *nom_donne)
+{
+    strcpy(comp->id, nom_donne);
+}
+
 
 /*!
  * \fn int init_Competence(Competence *noeud)
@@ -63,18 +69,18 @@ int set_Enfant(Competence *parent, Competence *nouvel_enfant)
  */
 int init_Competence(Competence *noeud)
 {
-    noeud->nomComp[0] = '\0';
-    noeud->id[0] = '\0';
+    memset(noeud->nomComp, 0, sizeof(noeud->nomComp));
+    memset(noeud->id, 0, sizeof(noeud->id));
     noeud->prix_competence = 0;
     noeud->frere = NULL;
     noeud->enfant = NULL;
     noeud->effet = NULL;
+    noeud->connu = 0;
 
     return 0;
 }
 
 
-
 /*!
  * \fn int taille(Competence *noeud)
  * \brief La fonction renvoie le nombre d'enfants totaux d'une competence.
@@ -106,10 +112,12 @@ unsigned int hauteur(Competence *noeud)
         for (enfant = noeud->enfant; enfant != NULL; enfant = enfant->frere)
         {
             if (hauteur(enfant) > compteur)
-            compteur = 1 + hauteur(enfant);
+                compteur = 1 + hauteur(enfant);
         }
         return compteur;
-    }else{
+    }
+    else
+    {
         return 0;
     }
 }
@@ -150,7 +158,7 @@ boolean est_connue(Competence *c)
 unsigned int NbEnfants(Competence *noeud)
 {
     unsigned int nb;
-	if (estVide(noeud))
+    if (estVide(noeud))
     {
         nb = 0;
     }
@@ -159,20 +167,14 @@ unsigned int NbEnfants(Competence *noeud)
         Competence *enfant;
         for(noeud->enfant; enfant!= NULL; enfant=enfant->frere);
 
-		nb++;
+        nb++;
     }
     return nb;
 }
 
 
-/* -------------------------------------------------------------------------------------- */
-
-Competence* construire_arbre_competence(Competence* a){
-    return NULL;
-
-}
-
-int rafraichir_competences(Competence * a){
+int rafraichir_competences(Competence * a)
+{
     return 0;
 }
 
@@ -195,10 +197,120 @@ boolean est_complet(Competence *noeud)
     return 1;
 }
 
-int chemin_auto_competence(Competence* c){      /* Renvoie la liste des compétences non connues se trouvant sur le chemin d'une compétence sélectionnée */
+int chemin_auto_competence(Competence* c)       /* Renvoie la liste des compétences non connues se trouvant sur le chemin d'une compétence sélectionnée */
+{
     return 0;
 }
 
-Effet_Competence * get_effet(Competence *c){      /* Renvoie l'effet d'une competence */
+Effet_Competence * get_effet(Competence *c)       /* Renvoie l'effet d'une competence */
+{
     return c->effet;
 }
+
+
+
+
+Competence* Extraire_Arbres(char *filename)
+{
+    node_t *rootXML, *Arbres;
+    char *id_text, *name_text;
+    int nb_Arbres=0, i_0=0;
+
+    rootXML = roxml_load_doc(filename);
+    Arbres = roxml_get_chld(rootXML,"Arbres",0);
+    nb_Arbres = roxml_get_chld_nb(Arbres);
+    printf("On a %d arbres de competences \n", nb_Arbres);
+
+    /* ---------------------------------------------------------------------------------------------- */
+    /* Extraction des arbres */
+    /* ---------------------------------------------------------------------------------------------- */
+
+    for(i_0=0; i_0<nb_Arbres; i_0++)
+    {
+        node_t *ArbreXML_Actuel = roxml_get_chld(Arbres, NULL, i_0);
+        Competence *Arbre_Actuel;
+        int nb_Comp1=0, i_1=0;
+
+        init_Competence(Arbre_Actuel);
+
+        nb_Comp1 = roxml_get_chld_nb(ArbreXML_Actuel);
+        printf("L'arbre %d contient %d competences de niveau 1\n",i_0, nb_Comp1);
+        set_comp_name(Arbre_Actuel,roxml_get_content(roxml_get_attr(ArbreXML_Actuel,"id",0),NULL,0,NULL));
+        printf("L'arbre actuel a pour nom : %s\n", Arbre_Actuel->nomComp);
+
+        /* ---------------------------------------------------------------------------------------------- */
+        /* Extraction des competences 1 */
+        /* ---------------------------------------------------------------------------------------------- */
+
+        for(i_1=0; i_1<nb_Comp1; i_1++)
+        {
+            node_t *CompetenceXML_1;
+            Competence *Competence_1;
+            int nb_Comp2=0, i_2=0;
+
+            init_Competence(Competence_1);
+
+            CompetenceXML_1 = roxml_get_chld(ArbreXML_Actuel, NULL, i_1);
+            nb_Comp2 = roxml_get_chld_nb(CompetenceXML_1);
+            printf("La competence numero %d de niveau 1 contient %d competences de niveau 2\n",i_1+1,nb_Comp2);
+
+            set_comp_name(Competence_1,roxml_get_content(roxml_get_attr(CompetenceXML_1,"nom",0),NULL,0,NULL));
+
+            for(i_2=0; i_2<nb_Comp1; i_2++)
+            {
+            }
+
+
+            /* La competence j devient un enfant de la competence i */
+            set_Enfant(Arbre_Actuel, Competence_1);
+            printf("L'enfant est : %s\n", Arbre_Actuel->enfant->nomComp);
+        }
+    }
+    return 0;
+}
+
+
+int Test_Competences()
+{
+    char* nomTest = "LeNom";
+    printf("Debut Test Competences\n");
+
+    Competence *Comp_Test_Parent, *Comp_Test_Enfant;
+/*
+    set_comp_name(Comp_Test_Parent, "Papa");
+    set_comp_id(Comp_Test_Parent, "ID_PA");
+    set_comp_name(Comp_Test_Enfant, "Bebe");
+    set_comp_id(Comp_Test_Enfant, "ID_BE");
+
+    init_Competence(Comp_Test_Parent);
+    init_Competence(Comp_Test_Enfant);
+
+
+
+*/
+
+
+    /*Verif */
+   /* printf("Le nom est : %s\n", Comp_Test_Parent->nomComp);
+    printf("L'ID est : %s\n", Comp_Test_Parent->id);
+    printf("Le nom est : %s\n", Comp_Test_Enfant->nomComp);
+    printf("L'ID est : %s\n", Comp_Test_Enfant->id);
+
+    printf("Lol");
+*/
+    //printf("On a : %d\n", Comp_Test_Parent->connu);
+
+
+
+  // set_Enfant(&Comp_Test_Parent, &Comp_Test_Enfant);
+
+//   printf("L'enfant de %s est : %s\n",Comp_Test_Parent.nomComp,Comp_Test_Enfant.nomComp);
+//   printf("L'id de l'enfant de %s est : %s\n",Comp_Test_Parent.nomComp,Comp_Test_Parent.enfant.nomComp);
+
+
+   return 0;
+}
+
+
+
+
diff --git a/src/competence.h b/src/competence.h
index 3f811c9a0871549c5cad311baf5a514c5c888c77..7fd86b834464c1793e4d37ad48f53a4e1e8a7160 100644
--- a/src/competence.h
+++ b/src/competence.h
@@ -5,6 +5,7 @@
 
 #ifndef COMPETENCE_H_INCLUDED
 #define COMPETENCE_H_INCLUDED
+#include "competence.h"
 
 /* Fonctions */
 
diff --git a/src/main.c b/src/main.c
index 4cb08dbc0723d17d33c2ba566e5b4525e1262781..8991110722e8f35c099b91d833d6bbc963ca1aa9 100644
--- a/src/main.c
+++ b/src/main.c
@@ -119,11 +119,12 @@ int main()
     /* Creation du package : */
     /* -------------------------------------*/
 
-    Game_Package Pack_A = Construire_Package();
+Game_Package Pack_A = Construire_Package();
 
 Classe* Classes_Pack = Librairie_Classes("../resources/Classes.xml");
 Terrain* Terrains_Pack = Librairie_Terrains("../resources/Terrains.xml");
 Skins_GUI* GUI_Pack = Get_Skins_GUI("../resources/GUI.xml");
+//Competence* Competences_Pack = Extraire_Arbres("../resources/Competences.xml");
 
 
 Pack_A.Classes_Package = Classes_Pack;
@@ -135,8 +136,7 @@ Pack_A.GUI_Package = GUI_Pack;
     /* -------------------------------------*/
 
 
-    printf("L'attaque 1 du mage est : %s\n",Pack_A.Classes_Package[0].attaques[2].nom);
-
+    printf("\nL'attaque 1 du mage est : %s\n",Pack_A.Classes_Package[0].attaques[2].nom);
     printf("Le nom du terrain 1 est : %s\n",Pack_A.Terrains_Package[0].nomTerrain);
     printf("L'adresse de la texture GUI 1 est : %s\n",Pack_A.GUI_Package[0].GUI_default);
     printf("La ligne 3 de la map 1 est : %s\n",Pack_A.Cartes_Package[0].lignes[2]);
@@ -144,15 +144,10 @@ Pack_A.GUI_Package = GUI_Pack;
     /* -------------------------------------*/
     /* -------------------------------------*/
 
-    main_SDL(Map_ANCIENNE_VERSION);
+    //main_SDL(Map_ANCIENNE_VERSION);
 
-/* -------------------------------------*/
-/* Comment utiliser le package : */
-/* -------------------------------------*/
 
-printf("L'attaque 1 du mage est : %s\n",Pack_A.Classes_Package[0].attaques[0].nom);
-printf("Le nom du terrain 1 est : %s\n",Pack_A.Terrains_Package[0].nomTerrain);
-printf("L'adresse de la texture GUI 1 est : %s\n",Pack_A.GUI_Package[0].GUI_default);
+    Test_Competences();
 
 
     return 0;
diff --git a/src/structures.h b/src/structures.h
index e69e1b1be9986a143f4c4cba011a463e5b0882fc..b6ccbd350c6fdc1b1030fccc777f3e0d3e675001 100644
--- a/src/structures.h
+++ b/src/structures.h
@@ -191,14 +191,16 @@ typedef struct Personnage{
  * \brief Definition de la structure competence.
  * sizeof(Competence) = 44 octets
  */
+
+
 typedef struct Competence{
     char nomComp[TAILLE_NOMS]; /*!< Nom de la competence de taille TAILLE_NOMS*/
     char id[TAILLE_ID];   /*!< Un entier qui represente la competence*/
     unsigned int prix_competence; /*!< Points a depenser pour acquerir la competence */
-    struct Competence *frere; /*!< Competence suivante sur le meme niveau */
     struct Competence *enfant; /*!< Premier enfant de la competence */
+    struct Competence *frere; /*!< Competence suivante sur le meme niveau */
     struct Effet_Competence *effet;  /*!< Pointeur vers les effets de la competence */
-    boolean connu; /*!< La competence est connue ou non */
+    unsigned int connu; /*!< La competence est connue ou non */
 }Competence;