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

Posted

技术标签:

【中文标题】如何在 CSS 选择器或 jQuery 中处理 XML 命名空间?【英文标题】:How can I handle XML namespaces in CSS Selectors or in jQuery? 【发布时间】:2012-07-15 04:51:17 【问题描述】:

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

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

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

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

【问题讨论】:

使用\\:(转义:):xml.find("channel > itunes\\:image") Parsing XML JQuery Ajax Response with Namespace 的可能重复项 【参考方案1】:

CSS 允许您在样式表中指定 namespaces 以与 selectors 一起使用。

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

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

【讨论】:

【参考方案2】:

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

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

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

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

【讨论】:

我没有看到这个答案,但如果这不是 WebKit 的另一个怪癖,我会被诅咒的。无论哪种方式,jQuery 都没有出现,也没有声称可以很好地支持 XML。

以上是关于如何在 CSS 选择器或 jQuery 中处理 XML 命名空间?的主要内容,如果未能解决你的问题,请参考以下文章

jquery基本选择器

无法定位元素:python 爬行中的 css 选择器或 xpath

“”之后的无效 CSS:预期 1 个选择器或规则,是“”

错误:“body”之后的无效 CSS:预期的选择器或规则,在第 4 行是“”

哪些 CSS 选择器或规则可以显着影响现实世界中的前端布局/渲染性能?

JQuery下一个选择器或类似的东西