【问题标题】:Parse an RSS feed for Android app ? Is jsoup the answer?解析 Android 应用程序的 RSS 提要? jsoup 是答案吗?
【发布时间】:2023-04-06 23:31:02
【问题描述】:

我正在阅读 Head First Android 开发书籍。在第三章中,他们尝试使用来自 here 的 NASA RSS 提要制作应用程序。
在本书中,作者将SAX parser 用于Java。我在网上查看了一些关于 SO 的答案表明 SAX 已过时,并且有更新的解决方案。

但是我不确定 Java 更容易使用哪些。我用Nokogiri 代替Ruby,类似的东西会很棒。我看了jsoup,看起来还不错,但我想知道你们可能有什么建议。

【问题讨论】:

标签: android xml-parsing jsoup android-parser


【解决方案1】:

我是《Head First Android Development》的作者,所以只是想谈谈一些想法。 SAX 确实有点麻烦,但很简单,并且内置在 Android 中一段时间​​(因此决定在书中使用它)。我也是一名 Rails 开发人员,我是 nokogiri 的忠实粉丝,并且经常使用它。看着 jsoup,我绝对可以看到它很有用。也就是说,我还没有尝试过,所以我无法提供任何第一手经验。

另一个值得关注的选项是 Android 内置的 XML PullParser。它仍然很像 SAX,但功能更全。

希望这会有所帮助。

【讨论】:

  • Johathan 我喜欢你的书,但我也在努力使用 xml 解析器。第 3 章在 github 上的代码目前不起作用,我想知道它们是否会很快得到修复?我正在考虑在尝试修改解析器失败后尝试制作自己的解析器(可以编译但应用程序强制关闭=/)。谢谢!
【解决方案2】:

第 3 章的代码停止,因为 Android 的主线程不支持网络。

因此您可以使用任何解析器,例如 XmlPullParser,但请确保您在其主线程之外进行网络连接(下载提要等)。您可以使用 AsyncTask 将网络连接到主线程之外.. 或创建一个新的 Thread() 并在该线程中进行网络连接(推荐)

实际上,在第 4 章中,他们确实创建了一个新线程来进行网络连接。因此,如果您改用第 4 章代码,它将起作用。

您可能面临的另一个问题是 OutOfMemoryError,因为如今美国宇航局的每日图像真的很大。因此,您必须使用 inSampleSize 对图像进行解码。您可以检查有关正确解码图像的其他问题以获得您想要的内容。祝你好运。 ))

【讨论】:

    【解决方案3】:
    【解决方案4】:

    我认为 SAX 是实现它的默认方式,但没有限制尝试新事物 :)

    【讨论】:

      【解决方案5】:

      由于version 1.6.2,Jsoup官方也支持XML解析。因此,这允许您使用类似 jQuery 的 CSS 选择器来解析 XML 和选择元素。要使用 Jsoup 创建 XML 文档,您需要以下方法而不是 Jsoup#parse() 方法:

      Document document = Parser.xmlParser().parseInput(xmlString, "");
      // ...
      

      这样输入就不会被隐式地视为 HTML5(因此,没有自动包含 <html><head> 标记等)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-08-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-04-05
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多