J'utilise le nouveau Le code crée l'élément suivant: p> Comment puis-je empêcher jQuery d'insérer le Attribut 'XMLNS'? J'ai essayé d'utiliser la méthode mise à jour:
La suggestion que l'utilisateur nrabinowitz a offert a été utile pour résoudre ce problème. L'ajout d'un attribut XLMNS à l'élément de niveau supérieur empêche l'attribut XLMNS d'être attribué automatiquement à chaque nouvel élément. Néanmoins, j'ai opté pour une autre solution pour mon programme particulier. J'ai plutôt utilisé la méthode $. parsexml () code> méthode avec jQuery 1.5. Chaque fois que j'insère un nouvel élément dans l'objet XML, ce nouvel élément obtient automatiquement l'attribut «XMLNS» avec la valeur «http://www.w3.org/1999/xhtml». Par exemple, voir l'extrait de code ci-dessous: .removeattr () code>, mais même cela semble fonctionner. Des idées? P> .replace () code> pour supprimer tous les attributs XLMNS après après que j'ai converti l'objet XML dans une chaîne (à afficher sur une page Web). P> p >
4 Réponses :
Essayez d'utiliser
$(myXml).find('three').append('<five>some value</five>');
a travaillé pour moi aussi, mais l'affaire était ajoutée '
Travaillé parfaitement en chrome, mais dans IE 11, rien n'a été ajouté. Testez-le: jsfiddle.net/eygqwwgt/2 Avez-vous un indice pourquoi?
Vous devez faire comme ceci:
var myXml = "<one attr='a'><two attr='b'/><three attr='c'><four attr='d'/></three></one>";
myXml = $.parseXML(myXml);
var el=xmlDoc.createElement("yourElement");
$(myXml).find('three').append($(el));
Votre solution donne toujours à l'espace de noms dans la balise "Yourelement". Voir at: jsfiddle.net/lzfg7zpv
Que se passe-t-il, c'est que le nœud que vous insérez a une autre propriété NAMESPACEURI.
nœud dérivé de $ .parsexml p> Votre nœud créé p> var myXml = "<one attr='a'><two attr='b'/><three attr='c'><four attr='d'/></three></one>";
myXml = $.parseXML(myXml);
$(myXml).find('three').append($('<five>some value</five>', myXml));
Utilisez ce code qui fonctionne en chrome également dans IE
var myXml = "<one attr='a'><two attr='b'/><three attr='c'><four attr='d'/></three></one>";
myXml = $.parseXML(myXml);
$(myXml).find('three').append($('',$.parseXML('<five>some value</five>')));
S'il vous plaît ajouter un peu de contexte à votre réponse.
Avez-vous essayé d'ajouter votre propre attribut XMLNS à l'élément racine? Je soupçonne qu'en l'absence d'espace de noms explicite, JQuery par défaut à XHTML.
Je ne pense pas que JQuery lui-même fait une analyse XML du tout. Au lieu de cela, cela permet au navigateur le faire. (Si JQuery avait un analyseur XML complet intégré, il serait encore plus énorme :-) Edit i> Yup a vérifié la source - il suffit de répondre à votre XML à une instance "Domparser".