2012-05-08 58 views
0

我将大约200个产品订阅源加载到非常耗时的网站中。寻找新的方法来做到这一点(Nokogiri以外)我正在看Feedzirra。目前我正在使用Feedzirra 0.3.1。安装没有任何问题。使用feedzirra解析XML产品订阅

我想解析以下XML产品饲料(和许多其他人):

feed = "http://adtraction.com/productfeed.htm?type=feed&format=XML&encoding=UTF8&epi=0&zip=0&cdelim=tab&tdelim=singlequote&sd=0&apid=52561763&asid=257117013" 

feed_obj = Feedzirra::Feed.fetch_and_parse(feed) 

但是当我做我只能得到一个零响应。它似乎至少它是在提取Feed,因为它在响应之前需要几秒钟。

我的问题:

  1. 是否有可能使用Feedzirra这个?或者,Feedzirra只能用于RSS提要?
  2. 我可以期待使用Feedzirra更快地阅读和解析它们,还是这是一个死胡同?
  3. 您是否得到相同的答复和/或您能否看到问题所在?

编辑:更改了代码,这实际上不是我在应用程序中使用的代码。

+0

使用做什么? – klaffenboeck

+0

对不起,这是一段以代码结束的“只是文本”... – Christoffer

回答

0

经过仔细观察,似乎Feedzirra仅适用于博客提要,并不适用于我的问题。我将不得不寻找其他选择。

1

看起来Feedzirra使用sax-machine进行基于Nokogiri的xml解析,所以它不太可能使用它来获得那么多的性能增益,而不是纯粹的nokogiri方法。它可能会有帮助的是与主机合作。你可以相当容易地检查标题,而不是一遍又一遍拉动文件,如果没有改变它

最有可能你得到空响应,因为它超时。

+0

好的,很酷。我会研究这一点。某些产品文件是32 Mb。下载通常不是最需要花费的时间,它更多是下载后的实际更新。可能很高兴知道我是否应该使用Feedzirra,但在我完全离开它之前需要一些关于我的问题的更多信息。 – Christoffer

1

有几个缺点在你的代码片段:

  1. 1不是在Ruby中的变量,它是一个Fixnum,没有值可以被分配给它
  2. 你必须把周围的括号url以将其转换为字符串并将其分配给变量。
  3. 除非你定义它,我敢肯定,using是不是在Ruby指令

更改您的代码是这样的,它应该最有可能的工作:

first = "http://adtraction.com/productfeed.htm?type=feed&format=XML&encoding=UTF8&epi=0&zip=0&cdelim=tab&tdelim=singlequote&sd=0&apid=52561763&asid=257117013" 
feed = Feedzirra::Feed.fetch_and_parse(first) 

feed应该再成为某种Feedzirra对象,你可以继续工作。

+0

对不起,把代码放在那里时我有点sl I,我意识到我最初编写的文本并不能很好地描述问题。我将编辑问题....谢谢。 – Christoffer