2010-06-16 19 views
22

Sono a conoscenza della domanda this già esistente, ma non mi ha dato fortuna.Come convertire una stringa in un oggetto XML in JavaScript?

Ho un'applicazione che carica un documento XML physicial tramite il seguente metodo:

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

ho analizzare il codice XML e convertirlo in una stringa che viene salvato in una variabile in modo che possa essere facilmente conservato in un database. Come posso ora convertire i dati in questa variabile in un oggetto XML in modo che possa essere analizzato come tale?

+0

come potrebbero essere i tuoi dati? – Reigel

risposta

60

non jQuery:

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); 
} 

Dal jQuery 1.5, è possibile utilizzare jQuery.parseXML(), che funziona esattamente allo stesso modo in cui il codice di cui sopra:

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

+1 Non è solo non-jQuery, questo in realtà analizza correttamente l'XML, a differenza del parser jQuery. – Anurag

+0

In realtà stavo cercando una soluzione jQuery, anche se so che non ho specificato. Ho trovato la tua risposta molto utile, però, non avevo considerato questo metodo prima. –

+0

+1 in aggiunta al commento di Anurags: jQuery ha incasinato il mio XML valido (il documento creato era solo sbagliato) e non è una soluzione valida per l'analisi di XML! Può essere usato per interrogare il documento, ma non per crearlo correttamente – Knickedi

3

Se è ancora in formato XML, dovresti essere in grado di racchiuderlo nella funzione jQuery e iniziare a utilizzare jQuery per analizzarlo. Per esempio:

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

Se xmlStringFromDB è ancora una stringa, quindi forzerebbe una stringa in XML ogni volta che la si utilizza. Se ne hai bisogno solo una volta, o puoi collegare tutte le tue richieste, stai sicuramente bene, ma altrimenti dovresti salvarlo in una variabile (temporanea). –

Problemi correlati