2010-11-22 24 views
0

J'utilise jQuery pour ajouter un élément XML à mon document XML en mémoire.Comment éliminer l'espace de nom par défaut lors de l'utilisation de jQuery.appendTo sur un document XML

var newElem = xmlDoc.find("newElem"); 
if (newElem.length == 0) 
    newElem = $("<newElem/>").appendTo(xmlDoc); 

Ce que je finis avec est:

<newElem xmlns="http://www.w3.org/1999/xhtml"></newElem> 

Ce fichier XML est envoyé sur le serveur dans un appel AJAX, et en utilisant les espaces de noms par défaut dans dom4j est une douleur. Est-il possible d'arrêter l'ajout des espaces de noms par défaut? J'utilise Firefox en passant.

Cela pourrait-il être une chose spécifique au navigateur?

Répondre

0

Il est probable que quelque chose que jQuery ne prend pas en charge, car il utilise simplement createElement, plutôt que createElementNS. L'effet net est qu'il utilise toujours l'espace de nom de document (HTML). Vous souhaitez probablement utiliser directement document.createElementNS.

+0

Il s'avère que l'utilisation de createElement fonctionne correctement. La clé est d'utiliser cela et non les routines de création internes de jQuery –

+0

Bon, je suppose que cela a à voir avec le document sur lequel vous l'appelez. jQuery l'appelle toujours sur window.document, alors que vous le faites probablement sur votre propre document. C'est bon d'entendre que vous l'avez réussi! –

0

Vous ne pouvez pas utiliser la syntaxe $("<newElem/>") - qui crée un nouveau dooc xml à partir de la racine , d'où les xmlns.

Vous devez utiliser la méthode non-jQuery createElement() simple-javascript:

var el = xmlDoc.createElement(childname); // Create non-jq element 
el = $(el);        // jQuery-ize it 
el.appendTo(xmlDoc);      // Append using jq object 

Et, alors que je suis, si vous êtes à un nœud annexant-XML jQuery qui est pas document, utilisation

var el = parent.context.createElement(childname);