Javascript 从XML(RSS)解析字符串<;标题>;仅当它包含该字符串时

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=(“玩家名称”,你

我试图从RSS解析一个项目,但前提是它的标题中包含某些字符串

我有一个余烬RSS解析器应用程序,可以作为一个游戏的日志检查器。例如,这里显示了一个名为“Versusik”的玩家的“冒险日志”:

下面是从包含我正在使用的RSS提要的URL中抓取信息的代码

“feed.js”:

下面是单个项目的代码

“feed_item.js”:

它按预期工作,从
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);
    }
  }