繁体   English   中英

用jquery解析RSS feed的属性

[英]Parse attributes of RSS feed with jquery

我正在将tumblr博客中的rss feed解析到我的网站上。 我正在尝试使用jQuery解析Feed中的某些特定信息。 以下是以下代码段:

<rss xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0">
<channel>
<atom:link xmlns:atom="http://www.w3.org/2005/Atom" rel="hub" href="http://tumblr.superfeedr.com/"/>
[lots of stuff]
</channel>
</rss>

现在,我想从提要中获取href =“ http://tumblr.superfeedr.com/” ,因为这将帮助我确认提要实际上来自tumblr博客。

但是,问题在于我对如何执行此操作有些困惑。 我一直在尝试使用以下内容:

$.get(blogUrl, 
function(data) {
    var xml = $(data);          
    var foo = xml.find('atom:link').attr('href');
    alert("link href=" + foo);
});

其中blogUrl是所讨论的RSS提要的URL。 我为此尝试了多种变体-如此之多,以至于我开始盘旋-所以我想在这里问。 我尝试将'atom:link'更改为'atom \\:link'并在find命令的末尾添加'.text()',但是没有运气。 除了开始时的atom:link数据外,我还可以获得整个通道的全文,这很接近但也不正确!

那么,我如何获得自己想要的信息? 我见过的所有代码指南和先前的问题都集中在对rss feed中的多个重复项进行迭代(这当然是有道理的,因为那是您应该使用rss feed进行的工作),但是我只是在尝试确认所选的供稿是预期的正确供稿类型。

谢谢!


更新:得益于Jasd的以下帮助,我得以使此工作正常进行。 这是更新的代码。

$.get(blogUrl, 
    function(data) {    
        var doc = data.getElementsByTagNameNS("http://www.w3.org/2005/Atom", "link")[0];
        var href = dic.getAttribute("href");
    }

因为冒号分隔的标签名称(例如atom:link是指在不同名称空间( atom是名称空间)中定义的标签,所以没有名称空间就无法查询它。 您还必须提供要在其中查找标签的名称空间的URL。

这就是它在Chrome中的工作方式(我认为在IE以外的所有其他浏览器中)(为简洁起见,省略了错误检查):

var xmlString = "<rss...>...</rss>";
var doc = new DOMParser().parseFromString(xmlString, "text/xml");
var elem = doc.getElementsByTagNameNS("http://www.w3.org/2005/Atom", "link")[0];
var href = elem.getAttribute("href");

我不知道jQuery是否提供从中抽象出的功能可以在所有浏览器上使用。 如果没有,请在IE中使用ActiveXObject而不是DOMParser (另请参见JavaScript中的可变字符串的XML解析 )。

更新:使用jQuery时,可以使用$(doc).find("atom\\\\:link").attr("href")来查询带有名称空间的标签(请参见http://www.rfk.id.au/blog / entry / xmlns-selectors-jquery /以获取更多详细信息,以及一个jQuery插件,该插件应使使用命名空间的查询元素更加容易)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM