From 7333658299444003682e23359f150aff0c7ccdb9 Mon Sep 17 00:00:00 2001
From: Romain Jegat <romain.jegat@insa-rennes.fr>
Date: Sat, 2 Apr 2016 12:42:26 +0200
Subject: [PATCH] Avancement sur la lecture XML des classes - Ne compile pas -
 Help ?

---
 src/ClassesXML.c | 39 ++++++++++++++++++++++++++-------------
 src/ClassesXML.h | 11 +++++++++++
 src/classe.c     |  8 ++++++--
 src/classe.h     |  5 +++++
 4 files changed, 48 insertions(+), 15 deletions(-)
 create mode 100644 src/ClassesXML.h

diff --git a/src/ClassesXML.c b/src/ClassesXML.c
index 1839ff8..12611ce 100644
--- a/src/ClassesXML.c
+++ b/src/ClassesXML.c
@@ -1,30 +1,37 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <roxml.h>
+#include "ClassesXML.h"
 #include "structures.h"
 
-int startClassesXML(Classe **tableauClasses, const char *filename);
 
 
-int startClassesXML(Classe **tableauClasses, const char *filename)   // Remplit le tableau de classes à partir du fichier XML
+
+
+Classe** Remplir_Classes(const char *filename)   // Remplit le tableau de classes à partir du fichier XML
 {
-    printf("Chargement des classes\n");
+
     node_t *root, *Classes, *Classe;
-    int nombre_classes=0;
-    root = roxml_load_doc(filename);
-    Classes = roxml_get_chld(root, NULL, 0);
-    nombre_classes = roxml_get_chld_nb(Classes);
+    unsigned int i=0, nb_classes=0;
 
+    char PV_text; /* a supprimer */
 
+    root = roxml_load_doc(filename);            /* Ouvre le doc XML et créé le noeud de base */
+    Classes = roxml_get_chld(root, NULL, 0);    /* Descend d'un niveau dans l'arborescence */
+    nb_classes = roxml_get_chld_nb(Classes);    /* Récupère le nombre de classes entrées dans le fichier XML */
+    printf("Classes contient %d enfants\n", nb_classes);
+    //roxml_free_node(Classes);
 
-//    LibClasses=(????*)malloc(sizeof(sizeof(Classe)))
 
-//    for(i=0; i<map1.nombre_elements; i++)  /* Boucle de remplissage des classes */
-/*    {
+    printf("Chargement des classes\n");
+    Classe *ListeClasse = malloc(nb_classes * sizeof(Classe));
+
+    for(i=0; i<nb_classes; i++)   //Boucle de remplissage des classes
+    {
 
     char *id_text, *name_text, *PV_text, *PM_text, *MV_text, *DESC_text;
 
-    Classe = roxml_get_chld(Classes, NULL, 0);
+    Classe = roxml_get_chld(Classes, NULL, i);
 
     node_t *Skills, *ID, *NAME, *PV, *PM, *MV, *DESC;
 
@@ -35,7 +42,7 @@ int startClassesXML(Classe **tableauClasses, const char *filename)   // Remplit
     MV = roxml_get_attr(Classe, "MV", 0);
     DESC = roxml_get_attr(Classe, "Desc", 0);
 
-    }
+
 
     id_text = roxml_get_content(ID, NULL, 0, NULL);
     name_text = roxml_get_content(NAME, NULL, 0, NULL);
@@ -50,6 +57,12 @@ int startClassesXML(Classe **tableauClasses, const char *filename)   // Remplit
     printf("Le nombre de PM est : %s\n", PM_text);
     printf("Le nombre MV est : %s\n", MV_text);
     printf("La description est : %s\n", DESC_text);
-*/
+
+    ListeClasse[i][]= ?
+
+    }
+
+return ListeClasse;
+
 }
 
diff --git a/src/ClassesXML.h b/src/ClassesXML.h
new file mode 100644
index 0000000..f7a2610
--- /dev/null
+++ b/src/ClassesXML.h
@@ -0,0 +1,11 @@
+#ifndef CLASSESXML_H_INCLUDED
+#define CLASSESXML_H_INCLUDED
+
+#include "structures.h"
+#include "classe.h"
+#include "structures.h"
+
+
+Classe** Remplir_Classes(const char *filename);
+
+#endif // CLASSESXML_H_INCLUDED
diff --git a/src/classe.c b/src/classe.c
index e20b052..a240f9c 100644
--- a/src/classe.c
+++ b/src/classe.c
@@ -3,12 +3,16 @@
 #include <roxml.h>
 #include "classe.h"
 #include "structures.h"
+#include "ClassesXML.h"
 
+Classe** Librairie_Classes(char *filename)
+{
 
+Classe **Tab_Classes;
+Tab_Classes = Remplir_Classes("Classes.xml");
 
 
 
 
-Classe **Tableau_Classes;
-
 
+}
diff --git a/src/classe.h b/src/classe.h
index 0bd1efc..2df4101 100644
--- a/src/classe.h
+++ b/src/classe.h
@@ -1,6 +1,11 @@
 #ifndef CLASSE_H_INCLUDED
 #define CLASSE_H_INCLUDED
 
+#include "structures.h"
+#include "ClassesXML.h"
+#include "structures.h"
 
 
+Classe ** Librairie_Classes(char *filename);
+
 #endif // CLASSE_H_INCLUDED
-- 
GitLab