Bonjour,
On essaye de récupérer une suite de nombres séparée par des espaces (3000 nombres) situés au niveau d'un noeud d'un fichier xml. On souhaite enregister chaque élément de cette suite dans un tableau a 3000 éléments. notre soucis est le suivant:
On arrive à récuperer cette suite sous forme de chaîne de caracteres. cependant, nous on cherche a récuperer cette liste nombre par nombre.
Pourriez vous nous aider?
Merci par avance

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <libxml/parser.h>
#include <libxml/xpath.h>
 
int main() {
//Ouverture d'un fichier txt pour sauvegarder les données xml recupérées
char test[3000];
double test2;
// Ouverture du document XML
xmlKeepBlanksDefault(0); // Ignore les noeuds texte composant la mise en forme
 xmlDocPtr doc = xmlParseFile("donnees.xml");
 
if (doc == NULL) 
{
fprintf(stderr, "Document XML invalide\n");
return EXIT_FAILURE;
}
/ Initialisation de l'environnement XPath
xmlXPathInit();
 // Création du contexte
xmlXPathContextPtr ctxt = xmlXPathNewContext(doc);
if (ctxt == NULL) 
{
 fprintf(stderr, "Erreur lors de la création du contexte XPath\n");
return EXIT_FAILURE;
 }
 // Evaluation de l'expression XPath
xmlXPathObjectPtr xpathRes = xmlXPathEvalExpression("/region/regionsphere/elements/text()", ctxt);
if (xpathRes == NULL) 
{
fprintf(stderr, "Erreur sur l'expression XPath\n");
return EXIT_FAILURE;
}
// Manipulation du résultat
xmlNodePtr tab;
if (xpathRes->type == XPATH_NODESET) 
{
int i;
   for (i = 0; i < xpathRes->nodesetval->nodeNr; i++) {
   xmlNodePtr n = xpathRes->nodesetval->nodeTab[i];
 
 
if (n->type == XML_TEXT_NODE || n->type == XML_CDATA_SECTION_NODE) 
{
tab=n->content;
 printf("%s\n", tab);	}
sscanf (tab, "%600c" , test) ;
printf("test =%s\n", test);
sscanf (test, "%c" , test2) ;
printf("test2=%f\n",test2);
// test
printf("\n test0 =%c\n", test[0]);
printf("test1 =%c\n", test[1]);
printf("test2 =%c\n", test[2]);
printf("test3 =%c\n", test[3]);  
 
 xmlXPathFreeObject(xpathRes);
 xmlXPathFreeContext(ctxt);
 xmlFreeDoc(doc);
 return EXIT_SUCCESS;
 
}