2010-06-16 90 views
4

什麼是以下JavaScript代碼的jQuery替代品?如何使用jQuery解析xml?

var xmlobject = (new DOMParser()).parseFromString(xmlstring, "text/xml"); 

我相信一個jQuery替代品會更加跨瀏覽器兼容嗎?

+0

見http://stackoverflow.com/questions/2124924/can-xml-be-parsed-reliably-using-jquerys-responsexml-syntax和http://stackoverflow.com/questions/2908899/jquery -wont-parse- xml-with-nodes-called-option(提示:jQuery不是用來解析xml的。它的意思是*遍歷*一個已解析的DOM樹) – 2010-06-16 15:00:47

回答

3

的跨瀏覽器的方法如下,我貼了幾分鐘前在回答類似的問題:

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 xml = parseXml("<foo>Stuff</foo>"); 
if (xml) { 
    window.alert(xml.documentElement.nodeName); 
} 
+0

不錯。 jQuery的地方在於:$(parseXml(「 Stuff」))。find('stuff')'(即正確使用jQuery遍歷而不是解析)。 – 2010-06-16 15:06:59

-1

var $parsedXml = $(xmlstring);

對於〔實施例,如果您有類似

<object> 
    <property id="prop1" value="myVal" /> 
</object> 

爲您xmlstring,你可以做

var prop1 = $(xmlstring).find('#prop1').attr('value');

獲取對象屬性的值。

+0

你在IE中測試過了嗎? – user113716 2010-06-16 15:03:22

+2

[This does not well](http://stackoverflow.com/questions/2908899/jquery-wont-parse-xml-with-nodes-called-option)。 – SLaks 2010-06-16 15:04:36

+0

真的嗎?作品找我 - http://jsbin.com/ikuvu/edit – 2010-06-16 15:12:55