ActiveX : Microsoft.XMLDOM ?? [Résolu]

chmartin 10 Messages postés jeudi 19 juin 2003Date d'inscription 16 mars 2011 Dernière intervention - 13 juin 2007 à 12:28 - Dernière réponse : chmartin 10 Messages postés jeudi 19 juin 2003Date d'inscription 16 mars 2011 Dernière intervention
- 14 juin 2007 à 10:19
Bonjour,

Voici mon probléme : 

je genere un fichier xml assez volumineux à partir d'une base mysql via php,
 
Je le charge via javascript :

     xml = new ActiveXObject("Microsoft.XMLDOM");
     xml = load_xml_ie("./xml/test.php");

Les Valeurs sont affiché sous IE sous forme de listing à l'aide d'un fichier xsl :

     xsl_gestion = new ActiveXObject("Microsoft.XMLDOM");
     xsl_gestion = load_xsl_ie("./xsl/test.php");

L'utilisateur peut modifier les valeurs, les modifications sont envoyér à la base de donné via ajax :

     var Ajaxtest = new Ajax.Request('upd_test.php',{
                           method: 'post',
                           asynchronous: false,
                           contentType:  'application/x-www-form-urlencoded',
                           encoding:     'UTF-8',
                           parameters: { ... },
                           onSuccess: Success, 
                           onFailure: Failure,
                           onComplete: Complete
                            });

Les modifications apporté à la base de donnée, je voudrai modifier ma variable xml  en lui apportant les modifications faites, m'évitant ainsi de regéner et de recharger le fichier xml, qui surcharger le chargement de le faire a chaque fois. ?  

Normalement cela est possible mais je n'arrive pas à trouver les méthodes associé a cet activeX?


Si quelqu'un pouvait m'aider .


Merci d'avance


Bonne journée.

Chris. 

tophetophe
Afficher la suite 

Votre réponse

10 réponses

Meilleure réponse
chmartin 10 Messages postés jeudi 19 juin 2003Date d'inscription 16 mars 2011 Dernière intervention - 14 juin 2007 à 10:19
3
Merci
J'ai trouvé j'etais un noeud en dessous :

xml.getElementsByTagName('utilisateurs')[0].appendChild(new_utilisateur);

Je continue, il ne reste plus que la suppresion d'un noeud, et la modification d'attribut.

Merci encore 

tophetophe

Merci chmartin 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 72 internautes ce mois-ci

Commenter la réponse de chmartin
cs_bultez 13619 Messages postés jeudi 13 février 2003Date d'inscription 15 octobre 2013 Dernière intervention - 13 juin 2007 à 12:39
0
Merci
Bonjour,

>> mais je n'arrive pas à trouver les méthodes associé a cet activeX ?
    je ne pense pas qu'il existe de méthodes particulières
    faut regarder du coté du DOM
    getElementsByTagName("zone")[0].firstChild.nodeValue par exemple
    et tout ce qui est *child* *data* *node* insertbefore...



    peut-être me trompe-je ?





<hr />



Cordialement                Bul     [mon Site]     [M'écrire]



<hr />
Commenter la réponse de cs_bultez
chmartin 10 Messages postés jeudi 19 juin 2003Date d'inscription 16 mars 2011 Dernière intervention - 13 juin 2007 à 16:34
0
Merci
J'ai fait quelques tests :

          var liste_utilisateur = xml.getElementsByTagName('utilisateur');
 
J'affiche le nombre  d'elements :

          alert(liste_utilisateur.length);  
 
Pas de probleme il me retourne : 14252  

Je selectionne le nom du premier utilisateur :  

   var nom_utilisateur  = liste_utilisateur[0].getElementsByTagName('nom');
  
J'affiche le nombre  d'elements :

          alert(nom_utilisateur.length);  

Pas de probleme il me retourne : 1 (normal un nom par utilisateur).

J'essaye de recuperer la valeur du noeud :  
 
   alert(nom.data); 
   alert(nom.nodeValue);

Pour les deux il me mets undefined.

Est-ce-que j'ai fait une erreur, ou y-a-t-il une autre fonction pour afficher la valeur du noeud.

  

tophetophe
Commenter la réponse de chmartin
cs_bultez 13619 Messages postés jeudi 13 février 2003Date d'inscription 15 octobre 2013 Dernière intervention - 13 juin 2007 à 16:42
0
Merci
une ch'tite doc ?
    http://fr.selfhtml.org/javascript/objets/node.htm#generalites
pas toujours "très simple"
( pas la doc, mais ces histoires de noeuds et consors...à mon humble avis ... )
<hr />


Cordialement                Bul     [mon Site]     [M'écrire]



<hr />
Commenter la réponse de cs_bultez
cs_bultez 13619 Messages postés jeudi 13 février 2003Date d'inscription 15 octobre 2013 Dernière intervention - 13 juin 2007 à 16:49
0
Merci
nom ? c'est quoi ?
peut-être nom[0]  ?      et probablement .
firstChild.nodeValue ?
sinon... faudra voir ton xml. enfin un extrait !


<hr />



Cordialement                Bul     [mon Site]     [M'écrire]



<hr />
Commenter la réponse de cs_bultez
chmartin 10 Messages postés jeudi 19 juin 2003Date d'inscription 16 mars 2011 Dernière intervention - 13 juin 2007 à 17:00
0
Merci
un exemple de mon fichier xml  sans les entetes :

   
      <nom>toto</nom>
      tata

      <titre>Mr</titre>
      12 rue du test
      76000

      <ville>ville</ville>
       ....
   
   
      <nom>toto2</nom>
      tata2

      <titre>Mr</titre>
      12 rue du test
      75000

      <ville>ville2</ville>
       ....
   
............

tophetophe
Commenter la réponse de chmartin
chmartin 10 Messages postés jeudi 19 juin 2003Date d'inscription 16 mars 2011 Dernière intervention - 13 juin 2007 à 17:15
0
Merci
ok cela marche :

  alert(nom[0].nodeName); 
  alert(nom[0].firstChild.data); 
  alert(nom[0].firstChild.nodeValue);

Mais j'ai du mal a comprendre pourquoi il faut que j'utilise firstChild etant donné :

  alert(nom[0].lastChild.nodeValue);

Marche aussi et donne le même resultat.

Merci Pour toutes tes explications et ta patience.

tophetophe
Commenter la réponse de chmartin
chmartin 10 Messages postés jeudi 19 juin 2003Date d'inscription 16 mars 2011 Dernière intervention - 13 juin 2007 à 19:40
0
Merci
J'ai un peut avancé, je peut modifer une valeur d'un champ,

Mais je n'arrive pas à cloner un utilisateur (pour pouvoir ajouter un utilisateur, je le modifirai par la suite):

   var new_utilisateur = liste_utilisateur[0].cloneNode(true);
   liste_utilisateur[0].appendChild(new_utilisateur);
   
Apres rechargement local de de mon xml :

   document.getElementById("listing_xsl").innerHTML = xml.transformNode(xsl_gestion);  

il ne m'affiche rien, mais pourtant si je lui fait :

 var liste_utilisateur = xml.getElementsByTagName('utilisateur');
 alert(liste_utilisateur.length);   
        
il m'indique bien un utilisateur en plus. 

Je ne vois pas ou j'aurai pue faire une erreur.

tophetophe
Commenter la réponse de chmartin
cs_bultez 13619 Messages postés jeudi 13 février 2003Date d'inscription 15 octobre 2013 Dernière intervention - 14 juin 2007 à 07:23
0
Merci
>>   


var new_utilisateur = liste_utilisateur[0].cloneNode(true);
   



c



'est quoi liste_utilisateur ?









    curieux d'utiliser cloneNode (surtout sur x[0])
       qui "Établit une copie identique d'un nœud".


<hr />



Cordialement            Bul     [mon Site]     [M'écrire]



<hr />
Commenter la réponse de cs_bultez
chmartin 10 Messages postés jeudi 19 juin 2003Date d'inscription 16 mars 2011 Dernière intervention - 14 juin 2007 à 10:09
0
Merci
bonjour,

liste utilisteur c'est : 

  var liste_utilisateur = xml.getElementsByTagName('utilisateur');

Ayant Créé une fonction permetant de modifier, la valeur d'un noeud, comme la balise utilisateur contient une multitude de balise, il me reste plus qu'a midifier chaque valeur des noeuds, je trouve cela moins prise de tete que que de créer une balise utilisateur et tous ses enfants et les remplir. Je pense que  cloneNode, sert à cela ce qui beaucoup plus rapide, que de creer balise par balise.

tophetophe
Commenter la réponse de chmartin

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.