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 :

Ouvrir, modifier et enregistrer un fichier xml tout en JavaScript


Sujet :

JavaScript

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2018
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2018
    Messages : 19
    Points : 10
    Points
    10
    Par défaut Ouvrir, modifier et enregistrer un fichier xml tout en JavaScript
    Bonjour,
    Je suis débutant en JavaScript et je souhaiterai un coup de pouce pour réaliser les tâches suivantes UNIQUEMENT en JavaScript:
    - ouvrir un fichier xml
    - modifier le contenu de cet élément dans le fichier : (<content>{Nom_produit}<\content>)
    - enregistrez le résultat dans un nouveau fichier xml

    Merci beaucoup pour votre aide ou vos conseils car j’ai du mal à me lancer.

  2. #2
    Invité
    Invité(e)
    Par défaut
    hello

    avec nodejs.. minimalisme

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    //fs comme filesystem..
    var fs = require('fs')
     
    //tu lis
    var str = fs.readFileSync('tonfichier.xml').toString()
     
    //tu remplaces
    str = str.replace('<content>{Nom_produit}</content>', 'ton contenu')
     
    //tu ecris
    fs.writeFileSync('tonfichier2.xml', str)

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2018
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2018
    Messages : 19
    Points : 10
    Points
    10
    Par défaut Autre méthode?
    Merci,
    Mais existe-t-il également une autre méthode sans passer par Node.js? (Il semblerait qu’il ne soit pas totalement sûr en terme de sécurité, d’aprés ce que j’en ai lu dans les actualités...)

  4. #4
    Membre confirmé
    Homme Profil pro
    Analyse système
    Inscrit en
    Mai 2014
    Messages
    388
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Arménie

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2014
    Messages : 388
    Points : 578
    Points
    578
    Par défaut
    Bonjour,

    Il faut préciser car il y a plusieurs possibilités :
    - Le fichier à ouvrir est sur le serveur et l'enregistrement du fichier modifié se fait sur le serveur.
    - Le fichier est sur le client et l'enregistrement se fait sur le client.
    - Le fichier est sur le serveur et l'enregistrement se fait sur le client.
    Dans tous les cas, les solutions à mettre en oeuvre ne sont pas simples.

  5. #5
    Invité
    Invité(e)
    Par défaut
    Mais existe-t-il également une autre méthode sans passer par Node.js?
    tu veux l'exécuter/interpréter comment ton js?

    Il semblerait qu’il ne soit pas totalement sûr en terme de sécurité, d’aprés ce que j’en ai lu dans les actualités...
    pas bien sûr de savoir quels pbs de sécurité te préoccupent

  6. #6
    Expert éminent
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 093
    Points : 6 754
    Points
    6 754
    Par défaut
    Voici un exemple côté client seul où tout se passe dans le navigateur. À cause des contraintes de sécurité imposées, il est nécessaire de demander à l’utilisatrice ou utilisateur de réaliser les actions suivantes :
    • sélectionner le fichier à modifier ;
    • sélectionner l’emplacement où enregistrer la version modifiée.


    Les technologies utilisées sont :


    Code html : 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
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    <!DOCTYPE html>
    <html lang="fr">
    <head>
      <meta charset="utf-8" />
      <title>Ouvrir, modifier, enregistrer un fichier</title>
      <style>
     
      textarea {
        display: block;
        border: solid thin #6cf;
        padding: 1px;
        width: 100%;
        max-height: 24em;
        overflow: auto;
      }
     
      </style>
    </head>
    <body>
     
    <input type="file" />
     
    <script> "use strict";
     
    const regex = /<content>\s*{Nom_produit}\s*<\/content>/g;
     
    function highlightText($textarea) {
      $textarea.focus();
      let match = regex.exec($textarea.value);
      if (match) {
        let j = regex.lastIndex;
        let i = j - match[0].length;
        $textarea.setSelectionRange(i, j);
        regex.lastIndex = 0;
      }
    }
     
    document.querySelector("input[type=file]")
      .addEventListener("change", (event) => {
        let file = event.target.files[0];
        if (!file) {
          console.log("Aucun fichier sélectionné");
          return;
        }
        else {
          console.log(file);
          let reader = new FileReader();
     
          reader.onload = () => {
            let $ta = document.querySelector("textarea");
            let $button = document.querySelector("button");
            if (!$ta) {
              $ta = document.createElement("textarea");
              $ta.cols = 80;
              $ta.rows = 15;
              $button = document.createElement("button");
              $button.textContent = "Enregistrer";
     
              document.body.append($ta, $button);
     
              $button.onclick = () => {
                let blob = new Blob([ $ta.value ], { type: "text/xml" });
                let blobUrl = URL.createObjectURL(blob);
     
                let $a = document.createElement("a");
                $a.download = file.name;
                $a.href = blobUrl;
     
                document.body.append($a);
                $a.click();
                $a.remove();
                URL.revokeObjectURL(blobUrl);
              };
            }
     
            $ta.value = reader.result;
            highlightText($ta);
          };
     
          reader.readAsText(file);
        }
      });
     
    </script>
    </body>
    </html>

    Testé avec Firefox 62 – je ne garantis pas que ça fonctionne partout.
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  7. #7
    Membre confirmé
    Homme Profil pro
    Analyse système
    Inscrit en
    Mai 2014
    Messages
    388
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Arménie

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2014
    Messages : 388
    Points : 578
    Points
    578
    Par défaut
    Bonsoir,

    Watilin a écrit :
    Les technologies utilisées sont :
    - ...
    - Pour l’écriture : Blob et createObjectURL
    Et une pirouette aussi : On demande à JS de créer un lien, de cliquer dessus, puis de détruire le lien!

  8. #8
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2018
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2018
    Messages : 19
    Points : 10
    Points
    10
    Par défaut
    Merci à tous pour votre aide...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [JDOM] enregistrer un fichier XML avec JDOM
    Par fatenatwork dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 28/09/2007, 10h42
  2. [DOM XML] Enregistrer un fichier XML sur un serveur ftp
    Par scorpion1611 dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 12/09/2007, 15h33
  3. enregistrement de fichier XML dans une base SQL
    Par yelkam dans le forum XQUERY/SGBD
    Réponses: 1
    Dernier message: 18/07/2007, 08h58
  4. ouvrir et lecture d'un fichier XML
    Par snipper dans le forum Format d'échange (XML, JSON...)
    Réponses: 5
    Dernier message: 30/12/2006, 04h58
  5. Enregistrer un fichier xml dans un string
    Par dondano dans le forum Format d'échange (XML, JSON...)
    Réponses: 5
    Dernier message: 09/06/2006, 13h44

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