IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Utilisation du DOM et enregistrement de fichier


Sujet :

JavaScript

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 6
    Points : 2
    Points
    2
    Par défaut Utilisation du DOM et enregistrement de fichier
    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 :
    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");
    }
    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
     
    <input class="bouton" type="button" onclick="sauvegarder()" value="Sauvegarder" />
    voilà la fonction d'enregistrement :
    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...
    	//
    	//
    }
    voilà, maintenant si je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    document.getElementById("graph").innerHTML = noeuds.getElementsByTagName("travail")[0].getAttribute("ref");
    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 ?

    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

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 669
    Points
    66 669
    Billets dans le blog
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fso = new ActiveXObject("Scripting.FileSystemObject");
    Sous IE ?

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par SpaceFrog Voir le message
    Sous IE ?
    Je ne comprend pas bien la question.

    Cette portion de code me permets de savoir le fichier existe sur le disque.
    Oui c'est compatible Internet Explorer sinon.

    Si cette instruction vous laisse perplexe, et que vous avez mieux, je suis preneur , bien qu'elle marche et ne fasse pas partie de mon souci d'enregistrement.

    Alexandre

  4. #4
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 669
    Points
    66 669
    Billets dans le blog
    1
    Par défaut
    Ben non seulement c'est compatible IE mais c'est exclusif IE ...

    Javascript n'est pas fait pour sauvegarder localement des fichiers.

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par SpaceFrog Voir le message
    Javascript n'est pas fait pour sauvegarder localement des fichiers.
    je m'attendais à cette réponse... Je sais que se n'est pas prévu pour, mais c'est possible, j'y suis arrivé et j'ai obtenu des premiers résultats :

    exemple de contenu généré avec javascript (dans mon fichier local) :
    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
     
    <?xml version='1.0' encoding='UTF-8'?>	
    	<travail ref="30/10/2011">
    		<dureeTravail>480</dureeTravail>
    		<dureePause>60</dureePause>
    		<debut>540</debut>
    		<fin>1080</fin>
    		<heureTravail>08:00</heureTravail>
    		<heurePause>01:00</heurePause>
    		<heureDebut>09:00</heureDebut>
    		<heureFin>18:00</heureFin>
    	</travail>
    	<travail ref="01/11/2011">
    		<dureeTravail>450</dureeTravail>
    		<dureePause>90</dureePause>
    		<debut>540</debut>
    		<fin>1080</fin>
    		<heureTravail>07:30</heureTravail>
    		<heurePause>01:30</heurePause>
    		<heureDebut>09:00</heureDebut>
    		<heureFin>18:00</heureFin>
    	</travail>
    	<travail ref="02/11/2011">
    		<dureeTravail>420</dureeTravail>
    		<dureePause>60</dureePause>
    		<debut>540</debut>
    		<fin>1020</fin>
    		<heureTravail>07:00</heureTravail>
    		<heurePause>01:00</heurePause>
    		<heureDebut>09:00</heureDebut>
    		<heureFin>17:00</heureFin>
    	</travail>
    Maintenant voilà ce que je veux :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <?xml version='1.0' encoding='UTF-8'?>
    <racine>
    //
    // le contenu ici, ajout de nouveaux noeuds à cet endroit.
    // AppendChild n'enregistre pas les données dans mon fichier, 
    // mais seulement en mémoire
    //
    </racine>

    J'ai bien précisé Internet Explorer car pour les gadgets Windows, c'est ce qui est utilisé comme norme, c'était juste pour mieux cibler les réponses.

    Alexandre

  6. #6
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 669
    Points
    66 669
    Billets dans le blog
    1
    Par défaut
    Ha ok...
    Désolé je ne penche pas du coté sombre.
    Et l'exclusif IE n'est pas ma tasse de thé.
    Pour moi ce genre de manip est et doit rester hors des compétences de javascript.
    Je ne te serais donc d'aucune utilité.

Discussions similaires

  1. Réponses: 7
    Dernier message: 13/04/2011, 15h59
  2. Utilisation de DOM pour fichiers xml
    Par awalter1 dans le forum Général Python
    Réponses: 4
    Dernier message: 21/10/2010, 15h05
  3. Réponses: 1
    Dernier message: 04/01/2010, 18h30
  4. [FoxPro] Enregistrer un fichier : utiliser "Enregistrer sous..."
    Par memphis710 dans le forum Autres langages
    Réponses: 1
    Dernier message: 25/11/2008, 11h44
  5. Réponses: 1
    Dernier message: 20/11/2008, 12h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo