Javascript 从XML(RSS)解析字符串<;标题>;仅当它包含该字符串时
我试图从RSS解析一个项目,但前提是它的标题中包含某些字符串 我有一个余烬RSS解析器应用程序,可以作为一个游戏的日志检查器。例如,这里显示了一个名为“Versusik”的玩家的“冒险日志”: 下面是从包含我正在使用的RSS提要的URL中抓取信息的代码 “feed.js”: 下面是单个项目的代码 “feed_item.js”: 它按预期工作,从Javascript 从XML(RSS)解析字符串<;标题>;仅当它包含该字符串时,javascript,xml,parsing,ember.js,rss,Javascript,Xml,Parsing,Ember.js,Rss,我试图从RSS解析一个项目,但前提是它的标题中包含某些字符串 我有一个余烬RSS解析器应用程序,可以作为一个游戏的日志检查器。例如,这里显示了一个名为“Versusik”的玩家的“冒险日志”: 下面是从包含我正在使用的RSS提要的URL中抓取信息的代码 “feed.js”: 下面是单个项目的代码 “feed_item.js”: 它按预期工作,从http://services.runescape.com/m=adventurers-log/rssfeed?searchName=(“玩家名称”,你
http://services.runescape.com/m=adventurers-log/rssfeed?searchName=(“玩家名称”,你可以试试Versusik)
并显示在我的余烬应用程序中
但是,如果我只想解析一个标题包含字符串“dragon helm”(而完整的标题是“我找到了一个dragon helm”)的项目,该怎么办
基本上,我想做一个类似的应用程序,但它只会解析那些字符串并将其放入一个表中,比如
提前感谢您提供的任何帮助
但是,如果我只想解析一个标题包含字符串“dragon helm”(而完整的标题是“我找到了一个dragon helm”)的项目,该怎么办
使用命名函数分离关注点:
function foo(data)
{
/* feed data */
var feed = data.responseData.feed;
/* feed entry transformation */
var items = feed.entries.forEach(function(entry) {bar(entry, this)});
this.get('store').commit();
}
function bar(entry, that)
{
if(that.get('feedItems').findProperty('link', entry.link) == false)
{
return;
}
else
{
that.get('feedItems').createRecord({
title: entry.title,
author: entry.author,
body: entry.content,
bodySnippet: entry.contentSnippet,
link: entry.link,
publishedDate: entry.publishedDate
});
}
}
然后将条件检查添加到成功回调:
success: function(data) {
/* Test for "dragon helm" in stringified JSON */
if /dragon\shelm/.test(JSON.stringify(data))
{
foo(data);
}
}
您可能需要使用filterBy或类似工具筛选结果。
function foo(data)
{
/* feed data */
var feed = data.responseData.feed;
/* feed entry transformation */
var items = feed.entries.forEach(function(entry) {bar(entry, this)});
this.get('store').commit();
}
function bar(entry, that)
{
if(that.get('feedItems').findProperty('link', entry.link) == false)
{
return;
}
else
{
that.get('feedItems').createRecord({
title: entry.title,
author: entry.author,
body: entry.content,
bodySnippet: entry.contentSnippet,
link: entry.link,
publishedDate: entry.publishedDate
});
}
}
success: function(data) {
/* Test for "dragon helm" in stringified JSON */
if /dragon\shelm/.test(JSON.stringify(data))
{
foo(data);
}
}