read parser parse online create javascript jquery html xml xmldocument

javascript - parser - ¿Cómo obtengo la cadena XML completa de un documento XML devuelto por jQuery(navegador cruzado)?



string to xml javascript (6)

Necesito el XML real como una cadena

¿Lo quieres como texto plano en lugar de un objeto XML? Cambie dataType de ''xml'' a ''text'' . Vea la documentación de $ .ajax para más opciones.

He intentado y no he podido averiguar cómo obtener la cadena XML completa del XMLDocument devuelto por un GET. Hay muchas preguntas sobre SO sobre cómo encontrar o reemplazar elementos específicos en el objeto, pero parece que no puedo encontrar ninguna respuesta sobre cómo obtener el documento completo como una cadena.

El ejemplo con el que estoy trabajando es desde here . La parte "haz algo con xml" es donde estoy en este momento. Tengo la sensación de que esto debería ser realmente trivial, pero no logro descubrir cómo. ¿Hay un "xml.data ()" o similar que pueda usarse para este propósito?

$.ajax({ url: ''document.xml'', type: ''GET'', dataType: ''xml'', timeout: 1000, error: function(){ alert(''Error loading XML document''); }, success: function(xml){ // do something with xml } });

El caso de uso es que quiero alimentar el xml al plugin flash y para eso necesito el XML real como una cadena.


Aunque esta pregunta ya ha sido respondida, quería señalar una advertencia: cuando recupere XML utilizando jQuery con Internet Explorer, DEBE especificar el tipo de contenido como "texto / xml" (o "aplicación / xml") o de lo contrario no poder analizar los datos como si fuera XML usando jQuery.

Puede estar pensando que esto es algo obvio, pero me sorprendió cuando uso Mozilla / Chrome / Opera en lugar de IE. Al recuperar una "cadena" de XML con un tipo de contenido de "texto", todos los navegadores, excepto IE, todavía le permitirán analizar esos datos (utilizando los selectores de jQuery) como si fueran XML. IE no lanzará un error y simplemente no devolverá ningún resultado a una declaración de selección de jQuery.

Entonces, en su ejemplo, siempre que solo necesite la versión serializada de la cadena del XML y no esperará que jQuery haga ningún tipo de selección en el DOM XML, puede establecer el tipo de contenido en "texto". Pero si TAMBIÉN necesita analizar el XML con jQuery, deberá escribir una rutina personalizada que serialice el XML en una cadena para usted, o si no, recuperar una versión del XML con contenido tipo "xml".

Espero que ayude a alguien :)


Puede obtener el objeto XMLHttpRequest nativo utilizado en la solicitud. En el momento en que publico esta respuesta, jQuery docs declara algunas maneras de hacerlo.

Uno de ellos es a través del tercer argumento de la devolución de llamada exitosa:

success: function(xml, status, xhr){ console.log(arguments); console.log(xhr.responseXML, xhr.responseText); console.log(''Finished!''); }

Para ver un ejemplo completo: https://jsfiddle.net/44m09r2z/


Si desea ambos, obtenga la respuesta como documento XML y como cadena. Deberias poder hacer

success: function(data){ //data.xml check for IE var xmlstr = data.xml ? data.xml : (new XMLSerializer()).serializeToString(data); alert(xmlstr); }

Si lo desea como cadena, ¿por qué especifica dataType:xml no sería entonces dataType:text sería más apropiado?


Si solo necesita una cadena que represente el xml devuelto por jquery, simplemente configure su tipo de datos en "texto" en lugar de intentar analizar el xml nuevamente en texto. Lo siguiente debería devolverle el texto en bruto de su llamada ajax:

$.ajax({ url: ''document.xml'', type: ''GET'', dataType: ''text'', timeout: 1000, error: function(){ alert(''Error loading XML document''); }, success: function(xml){ // do something with xml } });


También puede convertir fácilmente un objeto xml en una cadena, en su script java:

var xmlString = (new XMLSerializer()).serializeToString(xml);