如何在CSS选择器或jQuery中处理XML命名空间?

时间:2012-07-16 10:40:03

标签: jquery css jquery-selectors css-selectors xml-namespaces

我使用jQuery来解析RSS提要。我可以使用AJAX成功获取RSS提要:

$.get("podcast.xml", function (data) {
    xml = $(data);
}, "xml");

现在我可以使用xml.find("channel > title").text()获取播客的标题。如何在RSS Feed中选择<itunes:image>标记?

命令xml.find("channel > itunes:image")不起作用,因为:在CSS中分隔标记名称和伪类。我也试过了xml.find("channel > image"),但它不起作用。

如何在CSS选择器或jQuery中处理XML命名空间?

2 个答案:

答案 0 :(得分:7)

CSS允许您指定namespaces以便在样式表中使用selectors

然而,jQuery不支持这一点,因为你无法首先声明XML命名空间(因为jQuery除了借用其选择器语法之外与CSS无关),所以你必须将冒号视为一个文字字符,而不是像这样逃避:

xml.find("channel > itunes\\:image")

答案 1 :(得分:3)

我想添加一些我刚刚探讨过的有线内容:如果我在我的rekonq浏览器(使用webkit)上尝试上述代码,则通过搜索<itunes:image>找不到xml.find("channel > itunes\\:image")标记。

我必须省略术语itunes:,并且必须输入xml.find("channel > image")。所以我们有:

xml.find("channel > itunes\\:image") /* Firefox */

xml.find("channel > image") /* Rekonq (maybe also Safari and Chrome?!) */