如何解析Chrome 24和jQuery 1.8.2中的命名空间XML?

问题描述:

我试图解析以下XML:如何解析Chrome 24和jQuery 1.8.2中的命名空间XML?

<catalog> 
    <ns:book> 
     <author>Author</author> 
    </ns:book> 
</catalog> 

我已经广泛的研究,发现了以下(过去的)解决方案,其中没有一个目前在Chrome 24的工作与jQuery 1.8

$(xml).find("ns\\:book").each(function() 
    { 
    $("#output").append($(this).find("author").text() + "<br />"); 
    }); 

也不

$(xml).find("book").each(function() 
    { 
    $("#output").append($(this).find("author").text() + "<br />"); 
    }); 

也不

$(xml).find("[nodeName=ns:book]").each(function() 
    { 
    $("#output").append($(this).find("author").text() + "<br />"); 
    }); 

在我的研究中,似乎这主要是一个铬问题,而不是一个jQuery问题。有没有公​​认的解决方案?是否有更好的js库用于XML解析?

+0

第一种方法适用于Chrome的22 ...试试你的版本http://jsfiddle.net/zeGWs/ – charlietfl

我今天刚刚遇到同样的问题。 使用jQuery 1.8.3和Chrome 23,我注意到两种情况:

//Data is a string representing XML 
var data = "<catalog><ns:book><author>Author</author></ns:book></catalog>"; 

案例1

//Case 1 
var xml = $.parseXML(data); 
//xml is a XmlDocument 
$(xml).find("book"); 
//$(xml) is a Document 
//works directly, can't seem to be able to use namespace. 

病例2

var xml = $(data); 
//xml is an Object 
$(xml).find('ns\\:book') 
//works just fine