Bonjour,
c'est pourtant quelque chose qui ne me parait pas sorcier. Je m'en sors du coté serveur en php, mais pas du côté client en javascript.
Je voudrais que les éléments <mat> d'une variable XML soient remplacés par les éléments <mat> décrits dans une variable string. J'ai essayé du JQuery, de passer par une balise div et de recuperer son innerHTML, rien à faire. Soit j'ai des erreurs, soit j'ai des scories dans mon xml... Si quelqu'un sait faire, voilà le code :
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 // renvoie un objet XML en string function XMLToString(xmlData) { var xmlString; if (window.ActiveXObject){ //IE xmlString = xmlData.xml; } else{ // code for Mozilla, Firefox, Opera, etc. xmlString = (new XMLSerializer()).serializeToString(xmlData[0]); } return xmlString; } //renvoie un string en un objet document XML function stringToXML(txt){ if (window.DOMParser){ parser=new DOMParser(); XMLDoc=parser.parseFromString(txt,"text/xml"); } else { // Internet Explorer XMLDoc=new ActiveXObject("Microsoft.XMLDOM"); XMLDoc.async=false; XMLDoc.loadXML(txt); } return XMLDoc; } function affiche(quand, XMLDoc) { XMLpartContent = XMLDoc.getElementsByTagName("ML") ; partContent = XMLToString(XMLpartContent); alert(quand+' \n'+partContent); } doc = '<P><ML><mat><name>init1</name></mat><mat><name>init2</name></mat></ML></P>'; // 2 materiels XMLDoc = stringToXML(doc) ; affiche('initalement', XMLDoc) ; newMat = '<mat><name>final1</name></mat><mat><name>final2</name></mat><mat><name>final3</name></mat>'; // 3 materiels // ******************* Le code à pondre *************** // comment faire pour mettre à jour toutes les balises <mat> de mon XMLDoc avec le contenu de newMat // Je voudrais que XMLDoc soit structuré ainsi : <P><ML><label>label</label><mat><name>final1</name></mat><mat><name>final2</name></mat><mat><name>final3</name></mat></ML></P> // ne fonctionne pas !! newXML = stringToXML(newMat) ; XMLDoc.documentElement.replaceChild(newXML, XMLDoc.getElementsByTagName("ML")[0]) ; // **************************************************** affiche('finalement', XMLDoc) ;
Partager