Bonjour à tous,
je travaille sur une application qui modifie des fichiers XML. J'essaye d'ajouter un noeud (avec éventuellement des fils) dans un document XML.
Voici comment je crée l'objet document :
J'appelle tout d'abord la méthode manageBrowser() :
Puis je récupère mon document depuis un serveur via la méhode openRemote()
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 function manageBrowser() { var browser = window.navigator.userAgent.toLowerCase(); var version = parseFloat(navigator.appVersion); var req; var treePartDiv = document.getElementById("treePart"); if(browser.indexOf("msie")!=-1) { if(version<7) req = new ActiveObject('Microsoft.XMLHTTP'); else req = new XMLHttpRequest(); } // end if else { if(browser.indexOf("firefox")!=-1) req = new XMLHttpRequest(); else { printInContentPart("Unsupported browser"); printInTreePart("Unsupported browser"); return null; } // end else } // end else return req; } // end function manageBrowser
Tout cela fonctionne très bien
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 function openRemote(requestString, status) { requestObj = manageBrowser(); if(requestObj) { // get the content of the file requestObj.open('GET', requestString, false); requestObj.send(null); status = requestObj.status; if(status!=200) return null; return requestObj.responseXML; } // end if return null; } // end function open
Ensuite, je veux ajouter des éléments XML dans mon document (matérialisé par la variable xmlContent).
Note : newElementDescendantsElement sont des élements fils de newElement ; firefoxFirstChild() est une méthode qui renvoie le premier fils de l'élément passé en paramètre, en ignorant les #text insérés par FireFox.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 var newElement = xmlContent.createElement("root"); newElement.appendChild(newElementDescendantsElement.documentElement); newElement = currDocumentNode.parentNode.insertBefore(firefoxFirstChild(newElement),currDocumentNode);
et là, ça marche presque![]()
C'est à dire que mon élément est bien inséré avec ses fils, mais un namespace vide est ajouté au premier élément (newElement).
J'ai vu que pour éviter ce problème, il faut utiliser la méthode createNode(). Et là, ça ne marche plus du tout
J'ai une erreur systématique comme quoi la méthode createNode() n'existe pas ...
Quelqu'un a t-il une idée pour m'aider ?
D'avance merci.
Dr. Krusty.
Partager