如何解析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解析?
答
我今天刚刚遇到同样的问题。 使用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
第一种方法适用于Chrome的22 ...试试你的版本http://jsfiddle.net/zeGWs/ – charlietfl