2010-06-16 83 views
22

我知道this問題已經存在,但它沒有給我帶來好運。如何將字符串轉換爲JavaScript中的XML對象?

我有它加載通過以下方法用physicial XML文檔的應用程序:

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

我解析XML並將其轉換成被保存到一個變量,以便它可以容易地被存儲在字符串一個數據庫。我現在該如何將這個變量中的數據轉換回XML對象,以便它可以被解析?

+0

你的數據可能看起來像什麼? – Reigel 2010-06-16 14:26:48

回答

60

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

因爲jQuery的1.5,你可以使用jQuery.parseXML(),這在完全相同的方式與上面的代碼工作:

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

+1這不僅僅是非jQuery,這實際上解析XML正確,不像jQuery解析器。 – Anurag 2010-06-16 14:48:08

+0

我實際上正在尋找一個jQuery解決方案,但我知道我沒有指定。我發現你的答案非常有用,但之前沒有考慮過這種方法。 – 2010-06-16 14:54:21

+0

+1除了Anurags的評論:jQuery搞砸了我的有效XML(創建的文檔是錯誤的),並不是解析XML的有效解決方案!它可以用於查詢文檔,但不能正確創建它 – Knickedi 2014-08-21 08:20:42

3

如果它仍然是XML格式,你應該能夠將它包裝在jQuery函數中,並開始使用jQuery來解析它。例如:

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

如果xmlStringFromDB仍然是一個字符串,那麼每次使用它時都會強制將字符串轉換爲XML。如果你只需要一次,或者可以鏈接所有的請求,那麼你當然沒問題,但除此之外,你應該將它保存在一個(臨時)變量中。 – 2014-05-24 09:46:55

相關問題