He estado usando el nuevo método $.parseXML()
con jQuery 1.5. Cada vez que inserto un nuevo elemento en el objeto XML, ese nuevo elemento obtiene automáticamente el atributo 'xmlns' con el valor "http://www.w3.org/1999/xhtml". Por ejemplo, ver el siguiente fragmento de código:¿Cómo evito que jQuery inserte el atributo 'xmlns' en un objeto XML?
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>'));
El código crea el siguiente elemento:
<five xmlns="http://www.w3.org/1999/xhtml">some value</five>
¿cómo puedo evitar jQuery de insertar el atributo 'xmlns'? Intenté usar el método .removeAttr()
, pero ni siquiera eso parece funcionar. ¿Algunas ideas?
ACTUALIZACIÓN: La sugerencia que el usuario nrabinowitz ofreció fue útil para resolver este problema. Agregar un atributo xlmns al elemento de nivel superior evita que el atributo xlmns se asigne automáticamente a cada nuevo elemento. Aún así, opté por otra solución para mi programa en particular. En su lugar, utilicé el método .replace()
para eliminar todos los atributos xlmns después de convertir el objeto XML a una cadena (para mostrar en una página web).
¿Ha intentado agregar su propio atributo XMLNS al elemento raíz? Sospecho que, a falta de un espacio de nombres explícito, jQuery tiene el valor predeterminado de XHTML. – nrabinowitz
No creo que jQuery haga análisis de XML en absoluto. En cambio, permite que el navegador lo haga. (Si jQuery tuviera un analizador XML completo integrado, sería aún más grande :-) * edit * yup verificó el código fuente - simplemente entrega su XML a una instancia de "DOMParser". – Pointy