createNode et createElement
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() :
Code:
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 |
Puis je récupère mon document depuis un serveur via la méhode openRemote()
Code:
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 |
Tout cela fonctionne très bien :)
Ensuite, je veux ajouter des éléments XML dans mon document (matérialisé par la variable xmlContent).
Code:
1 2 3 4 5
|
var newElement = xmlContent.createElement("root");
newElement.appendChild(newElementDescendantsElement.documentElement);
newElement = currDocumentNode.parentNode.insertBefore(firefoxFirstChild(newElement),currDocumentNode); |
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.
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 :cry:
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.