2010-01-05 33 views
7

我想制作一个应用程序(其中包括)可以解析通过网络加载的Feed。鉴于标准的Android +核心Java库不提供馈送解析器服务,而且我也不想自己编写一个馈送解析器服务,您能否提名可在低规格Android设备上工作的Java馈送解析器。什么是Android上使用最广泛的Feed解析库

我刚刚开始学习Android,完成了Hello World示例,我想要转到我的第一个应用程序。我想制作一些解析一些ATOM或RSS源并在GridView中显示一些内容的东西。

UI的东西似乎在Android中有很好的记录,而且Sun有很多关于如何检索URL的例子,但是我不知道如何进行分析。

以前,当我在Pythion中完成这类事情时,我使用了一个通用的feed解析器,它可以解析任何东西(比如RSS,ATOM)。有很多很好的Python实现,但是我没有发现任何这样的东西作为标准Android库的一部分。

在工作中,我已经完成(轻)企业Java应用程序的维护。一般的做法似乎是采取你喜欢的任何类(例如Jakarta Commons feed-parser)并简单地将它们捆绑到CLASSPATH中。桌面应用程序并不关心依赖程度有多大,但是我确信在编译APK程序包以用于受限制的设备时这是一个大问题。当然,我必须非常挑剔我依赖哪种罐子,对吧?我可以继续使用和桌面应用程序相同的类吗?

注:

  • 我的背景是在Python(只有光的Java经验)
  • 理想我想使用一些流行的(不是neccecarily最好的),所以我可以得到它的支持。
  • 更好的是,我想使用内置的库函数,所以我不必添加任何第三方Jar来膨胀我的应用程序。
  • 目前针对Android 1.5的(因为这是我的设备运行的)

回答

2

Rome似乎是最流行的java RSS库之一。我想它也可以在Android上使用。

+1

我读过,罗马需要JavaBeans这不是在Android平台上的组件。这可能不是一种选择。 – 2010-01-05 23:45:12

+1

我记得看到一个基于罗马的android RSS项目。尽管如此,它并不活跃。所以给罗马一个尝试,不要花很长时间才能认识到它是否有效。无论如何,在这个问题上搜索Stackoverflow更多 - 有很多结果。 – Bozho 2010-01-05 23:47:32

+0

Android的DalvikVM不支持ClassLoader,在ROME API中使用女巫。 – lemotdit 2010-07-20 17:50:58

3

由于RSS/ATOM原料基本上可以使用SAXParser XML文档,这是标准的Java库的一部分,包括了Android。

+2

是的,我可以做到这一点 - 但我宁愿不重新发明轮子。 当然,很多(比我更优秀的开发者)已经创建了完美的feed分析器。如果我正在开发桌面,我绝对不会使用SAX编写源代码解析器代码,但考虑到我的时间限制,它可能会是垃圾。我可以为Android做类似的事吗? – 2010-01-05 17:36:06

+0

要么使用第三方库或重新发明车轮。既然你说过你不想将第三方jar与你的应用捆绑在一起,那么使用SAX就是最好的选择。如果你想使用其他的RSS库,那么我会用Bozho的建议来使用罗马。 – 2010-01-05 21:54:06

+0

澄清,我想尽量减少额外的依赖,因为它们会导致膨胀,但是最好是添加一点脂肪,使它比花费我大部分时间来实现基本/乏味的东西,如提要解析器更好。看到我的评论如下罗马 – 2010-01-05 23:46:18

0

设置SAX解析器的实现相当容易,但最难的部分是能够解析太阳下的任何和每个feed。

您需要满足RSS 1,RSS 2,Atom等所有格式。即使这样,您也必须应对格式不正确的Feed。

我以前遇到过类似的问题,所以决定在服务器上执行我的feed解析并获取解析的内容。这使我可以运行更复杂的库和解析器,我可以修改它们而不必为我的应用程序推送更新。

我有以下服务在AppEngine上运行,它允许在您的最后更简单的XML/JSON解析。响应有一个固定和简单的结构。您可以使用此解析

http://evecal.appspot.com/feedParser

您可以发送POST和GET具有下列参数的请求。

feedLink:RSS馈送响应的URL:JSON或XML作为响应格式

实例:

对于POST请求

卷曲--data-进行urlencode“feedLink = HTTP: //feeds.bbci.co.uk/news/world/rss.xml” --data-进行urlencode “响应= JSON” http://evecal.appspot.com/feedParser

对于GET请求

evecal。 appspot.com/feedParser?feedLink=http://feeds.nytimes.com/nyt/rss/HomePage & response = xml

我的android应用程序“NewsSpeak”也使用它。

0

检查轻量级Android库以阅读https://github.com/ahorn/android-rss中的RSS 2.0源的部分内容。我不知道Android是否是最流行的库,但对我来说看起来很好。我还没有尝试过。

+0

只是一个建议,但我怀疑,将这个链接放在上下文中的一个小叙述毫无疑问将不胜感激。例如,它只是你使用的东西?你知道绝大多数人使用和/或是最普遍的解决方案吗?随你。 – Rob 2012-08-08 02:33:16

+1

对不起,我不知道它是否是最受欢迎的,我还没有尝试过。因此只有链接。但到目前为止,它看起来是最好的,我一定会尝试。 – Chloe 2012-08-08 02:37:20

0

也有这个新的RSS图书馆中,我写道: https://github.com/Pkmmte/PkRSS

这是非常轻便,高效,快捷,可定制的,并且非常易于使用。例如,下面的代码在后台线程中加载并解析RSS提要:

PkRSS.with(this).load(url).async(); 

简单,对吧? 在GitHub页面中有更多详细信息。

相关问题