ActiveX : Microsoft.XMLDOM ??

Résolu
chmartin
Messages postés
10
Date d'inscription
jeudi 19 juin 2003
Statut
Membre
Dernière intervention
16 mars 2011
- 13 juin 2007 à 12:28
chmartin
Messages postés
10
Date d'inscription
jeudi 19 juin 2003
Statut
Membre
Dernière intervention
16 mars 2011
- 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

10 réponses

chmartin
Messages postés
10
Date d'inscription
jeudi 19 juin 2003
Statut
Membre
Dernière intervention
16 mars 2011

14 juin 2007 à 10:19
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
3
cs_bultez
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
32
13 juin 2007 à 12:39
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 />
0
chmartin
Messages postés
10
Date d'inscription
jeudi 19 juin 2003
Statut
Membre
Dernière intervention
16 mars 2011

13 juin 2007 à 16:34
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
0
cs_bultez
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
32
13 juin 2007 à 16:42
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 />
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_bultez
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
32
13 juin 2007 à 16:49
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 />
0
chmartin
Messages postés
10
Date d'inscription
jeudi 19 juin 2003
Statut
Membre
Dernière intervention
16 mars 2011

13 juin 2007 à 17:00
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
0
chmartin
Messages postés
10
Date d'inscription
jeudi 19 juin 2003
Statut
Membre
Dernière intervention
16 mars 2011

13 juin 2007 à 17:15
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
0
chmartin
Messages postés
10
Date d'inscription
jeudi 19 juin 2003
Statut
Membre
Dernière intervention
16 mars 2011

13 juin 2007 à 19:40
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
0
cs_bultez
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
32
14 juin 2007 à 07:23
>>   


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 />
0
chmartin
Messages postés
10
Date d'inscription
jeudi 19 juin 2003
Statut
Membre
Dernière intervention
16 mars 2011

14 juin 2007 à 10:09
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
0