【问题标题】:What is the most widely used feed-parsing library for Android什么是最广泛使用的 Android 提要解析库
【发布时间】:2010-01-05 17:11:24
【问题描述】:

我想制作一个(除其他外)可以解析通过网络加载的提要的应用程序。鉴于标准的 Android + Core Java 库不提供提要解析器服务并且我不想自己编写一个,您能否指定一个可在低规格 Android 设备上运行的 Java 提要解析器。

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

UI 的东西似乎在 Android 中有很好的文档记录,Sun 有很多关于如何检索 URL 的示例,但我不知道如何进行提要解析。

以前,当我在 Pythion 中做这种事情时,我使用了一个通用的提要解析器,它可以解析几乎任何东西(例如 RSS、ATOM)。这类东西有很多很好的 Python 实现,但是我还没有发现像这样的东西作为标准 Android 库的一部分。

在工作中,我对企业 Java 应用程序进行了(轻度)维护。一般的做法似乎是采用您喜欢的任何类(例如 Jakarta Commons 提要解析器)并将它们简单地捆绑到 CLASSPATH 中。桌面应用程序并不关心依赖项有多大,但是我确信在编译 APK 包以在内存有限的设备上使用时这是一个大问题。当然,我必须非常挑剔我依赖什么样的罐子,对吧?我可以继续使用与桌面应用程序相同的类吗?

注意事项:

  • 我的背景是 Python(只有少量 Java 经验)
  • 理想情况下,我想使用一些流行的东西(不一定是最好的),以便获得支持。
  • 更好的是,我想使用内置库功能,这样我就不必添加任何 3rd 方罐子来膨胀我的应用程序。
  • 目前以 Android 1.5 为目标(因为这是我的设备运行的)

【问题讨论】:

    标签: java android


    【解决方案1】:

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

    【讨论】:

    • 我读到 Rome 需要 JavaBeans,它不是 Android 平台上的组件。这可能不是一个选择。
    • 我记得看到一个基于罗马的 android RSS 项目。不过,它是不活动的。所以试试罗马吧,很快就会意识到它是否有效。不管怎样,在 Stackoverflow 上搜索更多关于这个问题的信息 - 有很多结果。
    • Android 的 DalvikVM 不支持 ClassLoader,ROME api 中使用了女巫。
    • 是的,罗马很烂。这是一个死项目,网站甚至没有加载。该示例无法编译。它使用 JDOM 1.0,如果您使用最新的 JDOM,它将无法编译。当它在 Android 中运行时,它需要 java.beans.* 类并且它们不存在。您必须单独下载这些类,将它们放在另一个包中,修改罗马源以引用,然后重新构建所有。不值得!
    【解决方案2】:

    由于 RSS/Atom 提要本质上是 XML 文档,您可以使用 SAXParser,它是 Android 随附的标准 Java 库的一部分。

    【讨论】:

    • 是的,我可以这样做——但我宁愿不重新发明轮子。肯定有很多(比我更有才华的开发人员)已经创建了非常好的提要解析器。如果我正在为桌面开发,我永远不会从 SAX 手动编写提要解析器,考虑到我的时间限制,这可能是垃圾。我可以为 Android 做类似的事情吗?
    • 要么使用第三方库,要么重新发明轮子。既然您说您不想将第三方 jar 与您的应用程序捆绑在一起,那么使用 SAX 将是最佳途径。如果您想使用其他 RSS 库,那么我会接受 Bozho 的使用 Rome 的建议。
    • 澄清,我想尽量减少额外的依赖,因为它们会导致臃肿,但是最好添加一点脂肪并使其更好,而不是花大部分时间实现基本/无聊的东西,比如提要解析器。请参阅下面我对罗马的评论
    【解决方案3】:

    设置一个 SAX 解析器的实现相当容易,但难的部分是能够在阳光下解析任何和每个提要。

    您需要满足所有格式的 RSS 1、RSS 2、Atom 等。即便如此,您也必须应对格式不佳的提要。

    我过去曾遇到过类似的问题,因此决定在服务器上进行提要解析并获取解析后的内容。这允许我运行更复杂的库和解析器,我可以在不为我的应用推出更新的情况下对其进行修改。

    我在 AppEngine 上运行了以下服务,它允许您最终进行更简单的 XML / JSON 解析。响应有一个固定而简单的结构。你可以用它来解析

    http://evecal.appspot.com/feedParser

    您可以使用以下参数发送 POST 和 GET 请求。

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

    例子:

    对于 POST 请求

    curl --data-urlencode "feedLink=http://feeds.bbci.co.uk/news/world/rss.xml" --data-urlencode "response=json" http://evecal.appspot.com/feedParser

    对于 GET 请求

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

    我的安卓应用“NewsSpeak”也使用这个。

    【讨论】:

      【解决方案4】:

      检查轻量级 Android 库以阅读 https://github.com/ahorn/android-rss 中的部分 RSS 2.0 提要。我不知道是否是最流行的 Android 库,但它看起来不错。我还没试过。

      【讨论】:

      • 只是一个建议,但我怀疑将这个链接放在上下文中的一点叙述无疑会非常感激。例如,它只是你使用的东西?您知道绝大多数人使用和/或最流行的解决方案吗?随便。
      • 对不起,我不知道它是否是最受欢迎的,我还没有尝试过。因此只有链接。但到目前为止,它看起来是最好的,我一定会尝试的。
      【解决方案5】:

      我还写了这个新的 RSS 库: https://github.com/Pkmmte/PkRSS

      它非常轻巧、高效、快速、可定制且非常易于使用。例如,以下代码在后台线程中加载和解析您的 RSS 提要:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-02-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-12-24
        • 1970-01-01
        • 2010-11-18
        相关资源
        最近更新 更多