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



我正在尝试解析以下XML:

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

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

  $(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 />");
  });

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

我今天刚刚遇到了同样的问题。对于jQuery 1.8.3和Chrome 23,我注意到了2种情况:

//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

最新更新