2012-10-07 65 views
2

我試圖解析以下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

回答

1

我今天剛剛遇到同樣的問題。 使用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