2010-06-16 117 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