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

AJAX Discussion :

[AJAX] Une modification effective sur le nœud d’un fichier XML avec JS et DOM


Sujet :

AJAX

  1. #1
    Inactif
    Inscrit en
    Juin 2008
    Messages
    304
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 304
    Points : 96
    Points
    96
    Par défaut [AJAX] Une modification effective sur le nœud d’un fichier XML avec JS et DOM
    J’ai réalisé un petit code qui modifie le contenu de la balise <param>
    Qui à un parentNode qui lui à un Attribute("type") == "change" et que <param> lui-même à un Attribute("name") == "value" Bref voici le code.(il ne marche pas avec IE je c’est pas pour quoi ?)

    Mais j’ai un souci avec c’est qui ne s’arrête jamais (et pour ton il sort bien de la boucle) si quelqu’un peut dire ou est l’erreur ? (Corriger grâce emmanuel.remy) j'ai modifier le code en conséquence dans test.rar.

    Aussi j’ai bien réussit à modifier le contenu de la balise dans le fichier XML mais elle n’est pas applique aux fichiers XML ? Peut être qu’il existe une fonction qui fait sa ou que je meus suis malle prit.

    importxml.js
    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
    65
    66
    67
    68
    69
     
    // fonction de chargement du fichier xml au sein d'une variable
    function loadXML(){
     
     // Routine de vérification si le navigateur gêre la méthode utilisée
     if (document.implementation && document.implementation.createDocument) {
      // déclaration pour Mozilla et FF
      docXml = document.implementation.createDocument('', '', null);
     
     }
     else if (window.ActiveXObject){
      // déclaration pour IE
      docXml = new ActiveXObject("Microsoft.XMLDOM");
     
     }
     else {
     
      alert('Votre navigateur ne saurait pas éxécuter ce script.');
     }
     
     docXml.load("bdd.xml");
    }
    // fonction de traitement des données chargées
    function biblio(num) {
     
     var numero = parseInt(num, 10);
       var evparams = docXml.getElementsByTagName('eventparams');
     var noeud_texte;
     document.write("evparams.length ="+evparams.length+"<br/>");
     
       for (var i=0, c=evparams.length; i<c; i++) { //evparams.length
         if(evparams[i].parentNode.getAttribute("type") == "change")
       { 
     
          //window.confirm("Stop taper Non ?");
        if(evparams[i].childNodes[1].getAttribute("name") == "value") {
            document.write("evparams["+i+"].childNodes:=&nbsp;"+evparams[i].childNodes[1].firstChild.nodeValue+"<br/>"); //.nodeValue,  nextSibling  
         /********Remplacement des balise*********/
             noeud_texte = document.createTextNode("Tu peux!");
             evparams[i].childNodes[1].replaceChild(noeud_texte, evparams[i].childNodes[1].firstChild); 
             document.write("Apré Modif: &nbsp; evparams["+i+"].childNodes:="+evparams[i].childNodes[1].firstChild.nodeValue+"<br/>");   
        } 
      }
       }
     
          return;    
          alert("balise eventparams attribut Type="+evparams[1].parentNode.getAttribute("type"));
       //alert("balise 1er des param attribut Name="+evparams[0].firstChild.getAttribute("name"));
    /*
         var events = docXml.getElementsByTagName('event'); 
         alert("le Nombre event(de seq): "+events.length +" leur valeur du type(1er) ="+events[0].getAttribute("type"));  
    */
    /********Remplacement des balise*********/
    function replaceText(texts) {
     var noeud_texte = document.createTextNode(texts);
     
    }
     
    }
     
    window.onload = function() {
     document.forms[0].reset();
     
     loadXML();
     
     document.forms[0].elements[1].onclick = function() {
      biblio(document.forms[0].elements[0].value);
     };
    };
    voici tous le code compler. en bas sur test.rar

    Merci d’avance pour votre aide

  2. #2
    Expert confirmé
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 56

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Points : 4 045
    Points
    4 045
    Par défaut
    Salut,

    Le problème vient du fait que ton document est fini de charger et que tu continues à faire des document.write. Or le flux est refermé

    ERE

  3. #3
    Inactif
    Inscrit en
    Juin 2008
    Messages
    304
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 304
    Points : 96
    Points
    96
    Par défaut
    Oui, Merci j’ai remplacer les « document.write » par des alert() et sa marche ok le code ne tourne pas indéfiniment.

    Mais les autres problèmes restent poser. !

    (Corriger grâce emmanuel.remy) j'ai modifier le code en conséquence dans test.rar.

  4. #4
    Membre expérimenté Avatar de DoubleU
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 106
    Points : 1 388
    Points
    1 388
    Par défaut
    Aussi j’ai bien réussit à modifier le contenu de la balise dans le fichier XML mais elle n’est pas applique aux fichiers XML ? Peut être qu’il existe une fonction qui fait sa ou que je meus suis malle prit.
    Javascript n'a pas accès au systeme de fichier, donc si tu veux enregistrer la modification dans ton fichier xml, c'est impossible de cette façon.

    Pour ce faire, il te faut envoyer ton arbre xml vers le serveur via un appel Ajax, et enregistrer le fichier avec ton langage serveur favori.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    62
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 62
    Points : 43
    Points
    43
    Par défaut
    IE et FF ne gère pas les arbres XML de la même manière, vois ceci pour ton problème avec IE :
    http://javascript.developpez.com/faq...M#DOMIEFirefox

Discussions similaires

  1. Réponses: 3
    Dernier message: 24/04/2007, 11h39
  2. Réponses: 1
    Dernier message: 14/12/2006, 23h06
  3. envoie fichier XML avec apartir d'une servlet
    Par s.lakhlifi dans le forum Servlets/JSP
    Réponses: 6
    Dernier message: 11/10/2006, 12h35
  4. [DTD] Valider fichier xml avec une DTD externe
    Par Tail dans le forum Format d'échange (XML, JSON...)
    Réponses: 5
    Dernier message: 26/06/2006, 18h14
  5. Modification de fichier XML avec XSLT
    Par osmoz dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 13/07/2005, 11h04

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