0

我开始研究 Google 的照片数据 Picasa API,它为您提供了一个包含相册和照片信息的大型 XML 文件。

我正在做一些快速而肮脏的测试,以使用 JQuery 解析 XML 文件(现在本地保存到我的硬盘驱动器)并提取存储为“gphoto:id”标签的专辑 ID,并将它们显示在一个div:

$(document).ready(function() {
$.get(
    'albums.xml',
    function(data) 
    {
        $(data).find('entry').each(function() 
        {
            var albumId = $(this).children('gphoto:id').text();
            $('#photos').append(albumId + '<br />');
        })
    })
})

我在控制台中收到以下错误:

jquery.js:3321 - 未捕获的语法错误,无法识别的表达式:语法错误,无法识别的表达式:id

这将适用于 XML 文件中的其他标签(例如标题、作者、更新等),但我试图了解这里发生了什么。它是否与“gphoto:id”中的冒号有关,不知何故?

您可以在此处查看 Picasa 相册中的 XML 文件的样子:http ://code.google.com/apis/picasaweb/docs/2.0/developers_guide_protocol.html#ListAlbumPhotos

4

3 回答 3

1

问题是 jQuery 会解析以冒号开头的内容作为过滤器(如:first:last:visible等)。它将您的选择器解析gphoto:id为“使用过滤器的gphoto元素”。id您需要对冒号进行转义以表明它是标签名称的一部分:

var albumId = $(this).children('gphoto\\:id').text();

您需要双反斜杠,以便 jQuery 接收到的字符串的内部表示具有反斜杠。

于 2011-02-06T23:24:16.350 回答
0

您需要 tpo 使用反斜杠转义冒号,例如

'gphoto\\\:id'

请参阅jQuery 常见问题解答

于 2011-02-06T23:25:57.020 回答
0

这个答案解决了这个问题。我通过替换它来工作:

var albumId = $(this).children('gphoto:id').text();

有了这个:

var albumId = $(this).find('[nodeName=gphoto:id]').text();
于 2011-02-07T05:03:42.483 回答