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) ;