2010-06-16 23 views
22

Conozco la pregunta this que ya existe, pero no me ha dado ninguna suerte.Cómo convertir una cadena a un objeto XML en JavaScript?

tengo una aplicación que carga un documento XML physicial mediante el siguiente método:

jQuery.ajax({ 
    type: "GET", 
    url: fileName, 
    dataType: "xml", 
    success: function (data) { 
     // etc... 
    } 
}); 

que analizar el código XML y convertirlo en una cadena que se guarda en una variable para que fácilmente se puede almacenar en una base de datos ¿Cómo puedo volver a convertir los datos en esta variable en un objeto XML para que pueda analizarse como tal?

+0

¿cómo se verán sus datos? – Reigel

Respuesta

60

no jQuery versión:

var parseXml; 

if (window.DOMParser) { 
    parseXml = function(xmlStr) { 
     return (new window.DOMParser()).parseFromString(xmlStr, "text/xml"); 
    }; 
} else if (typeof window.ActiveXObject != "undefined" && new window.ActiveXObject("Microsoft.XMLDOM")) { 
    parseXml = function(xmlStr) { 
     var xmlDoc = new window.ActiveXObject("Microsoft.XMLDOM"); 
     xmlDoc.async = "false"; 
     xmlDoc.loadXML(xmlStr); 
     return xmlDoc; 
    }; 
} else { 
    parseXml = function() { return null; } 
} 

var xmlDoc = parseXml("<foo>Stuff</foo>"); 
if (xmlDoc) { 
    window.alert(xmlDoc.documentElement.nodeName); 
} 

Desde jQuery 1.5, puede utilizar jQuery.parseXML(), que funciona exactamente de la misma manera que el código anterior:

var xmlDoc = jQuery.parseXML("<foo>Stuff</foo>"); 
if (xmlDoc) { 
    window.alert(xmlDoc.documentElement.nodeName); 
} 
+4

+1 No es solo no jQuery, esto realmente analiza XML correctamente, a diferencia del analizador jQuery. – Anurag

+0

Estaba buscando una solución jQuery, aunque sé que no especifiqué. Sin embargo, encontré tu respuesta muy útil, no había considerado este método antes. –

+0

+1 además del comentario de Anurags: jQuery estropeó mi XML válido (el documento creado fue simplemente incorrecto) ¡y no es una solución válida para analizar XML! Se puede usar para consultar el documento, pero no para crearlo correctamente – Knickedi

3

Si todavía está en formato XML, debería poder envolverlo en la función jQuery y comenzar a usar jQuery para analizarlo. Por ejemplo:

$(xmlStringFromDB).find('foo'); 
+0

Si xmlStringFromDB sigue siendo una cadena, eso forzaría una cadena a XML cada vez que la use. Si lo necesita solo una vez, o puede vincular toda su solicitud, sin dudas está bien, pero de lo contrario debería guardarlo en una variable (temporal). –

Cuestiones relacionadas