如何在 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 命名空间?的主要内容,如果未能解决你的问题,请参考以下文章
无法定位元素:python 爬行中的 css 选择器或 xpath
错误:“body”之后的无效 CSS:预期的选择器或规则,在第 4 行是“”