Bonjour,
Je suis en train de réaliser un gadget Windows qui doit me permettre de stocker dans un fichier XML mon temps de travail par jour. J'éprouve quelques difficultés liées à l'enregistrement du fichier sur le disque, c'est pourquoi je sollicite votre aide. Le langage à utiliser pour parvenir à mes fins est le javascript.
Contrairement à d'habitude, on se focalisera sur un code destiné à internet explorer... voilà où j'en suis, j'explique où je bloque après :
Dans le onload de la page, j'appelle la fonction d'initialisation. Elle permet de créer l'objet qui va parcourir le XML :
Côté HTML, la méthode d'enregistrement est appelée au clique sur un bouton.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 function init() { if (window.ActiveXObject) { xmlDoc=new ActiveXObject("Microsoft.XMLDOM"); } xmlDoc.async=false; xmlDoc.load("C:/statistiquesDeTravail.xml"); }
voilà la fonction d'enregistrement :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 <input class="bouton" type="button" onclick="sauvegarder()" value="Sauvegarder" />
voilà, maintenant si je fais :
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 function sauvegarder() { // je vérifie dans un premier temps si le fichier existe déjà. S'il n'existe pas, je le crée var fso, object; fso = new ActiveXObject("Scripting.FileSystemObject"); FileExist = fso.FileExists(fichierStockage); if(!FileExist) { // création du fichier object = fso.CreateTextFile(fichierStockage, false); // ajout de la trame qui doit servir de contenant pour les différentes informations object.write("<?xml version='1.0' encoding='UTF-8'?>\n"); object.write("<racine>\n"); object.write("</racine>\n"); } // on ferme les ressources ouvertes fso=null; object.Close(); // on se place sur la racine du document var noeuds = xmlDoc.getElementsByTagName("racine")[0]; // on crée la nouvelle balise à ajouter au fichier XML var nouveauTravail = xmlDoc.createElement("travail"); nouveauTravail.setAttribute("ref", jourCourant); noeuds.appendChild(nouveauTravail); // // // c'est ici qu'il doit manquer quelque chose... // // }
La div « graph » prend bien la valeur du jour, mais le fichier XML reste désespérément vide... AppendChild doit ajouter le noeud en mémoire, mais pas dans mon fichier. Auriez vous une solution pour réussir à enregistrer ces nouveaux noeuds dans mon fichier ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 document.getElementById("graph").innerHTML = noeuds.getElementsByTagName("travail")[0].getAttribute("ref");
J'en profite pour poser une autre question liée et qui doit avoir la même réponse à mon avis : si je fais une modification de noeud existant, je suppose que la modification sera elle aussi faite au niveau mémoire, et qu'il faudra enregistrer à coté, comme pour l'ajout de nouveau noeud ?
Merci beaucoup pour toute l'aide que vous m'apporterez.
Alexandre
Partager