这几天做了一个解析RSS的小东西时碰到了些问题,在这里纪录一下。
1.先说明一下碰到了问题是什么。
最开始本想做个很简单的小东西,在ANDROID下面用SAX解析RSS,
没想到SAX对SINA博客之类的用了[CDATA]的RSS解析得不完整,很多只解析出了一句。
(ps,不知道SINA这种RSS是不是标准的,也许这居于XML的东西根本就没个标准)
另外,SAX对非标准的RSS解析得更差,
这里的‘非标准RSS'是指没用[CDATA]直接在 description里面放上HTML TAG的那种。
具体的问题描述我引用下面一段话
引用
SAX处理完Element事件后, 紧接着会继续读取,并且交由characters进行处理内容.Character处理普通字符没有任何问题, 不会诱发任何监听事件. 而当遇到< [ ] 等字符时,又会触发一个新的characters事件, 也就是说, 如果你仅仅在 Characters 事件中进行处理保存数据(保存到一个变量中)的话, 是没有任何问题的, 只是遇到的时候, 发生了多次的Characters, 而你的代码上对事件的处理方式是一样的, 都是保存到变量中, 所以,变量中仅仅会保留最后一次赋值的数据. 最后一份数据正常情况下均是\n或者空格. 所以造成了,SAX无法读取CDATA数据的表象.
出自:
http://www.lshine.com/index.php/2010/07/sax_cdata/comment-page-1/#comment-7226
这个博客是在刚才在重新搜索时找到的,他的分析和我之前判断的一样。
(这个SAX问题我还是没解决,显示的内容是比以前多了,但还是不完整)
当然,如果具体Parser过程有疑问,可以看这个SAX官方网站,看看原理,看看源码:
http://www.saxproject.org/about.html
(SAX最后一次更新是SAX 2.0.2 (sax2 r3),在27-April 2004…不知道ANDROID里面的是不是这个版本…)
2.再说一下怎么解决问题。
SAX不行就换别的,DOM和PullXmlParser都可以。
这里先介绍一个:
http://zhoujianghai.iteye.com/blog/755749
他的这个比我的好,我看sdk和那些Tutorials快一个月了,写个东西还不能得心应手,
真是差距啊……
人家总结的也好:
引用
1)RSS的文件结构和含义
2)解析xml文件的几种方式
3)android应用的结构和MVC模式
4)activity的生命周期,
activity之间通过intent通信,
handler消息机制,
自定义ListView,
LinearLayout、
RelativeLayout、
FrameLayout布局界面,
WebView显示网页。
android数据存储(SQLite3)的相关操作,
菜单和对话框、Toast的使用,
android的测试驱动, (!)
uses-permission权限配置
这些,我花了一个月都像是在盲人摸象,完全没个纲领去系统的学习。
对我而言,还应该加上多线程之类的比较基础的东西……
真的反思一下了……
最后贴个东西:
1.Android XML Parser Performance,性能分析。留着备用。
http://www.developer.com/ws/article.php/10927_3824221_2/Android-XML-Parser-Performance.htm
2.下面是另一个人的SAX和PullxmlParser的代码,我写的东西太差,就不拿出来丢人现眼了……
http://blog.chinaunix.net/u2/85805/showart_1678985.html
over.
分享到:
相关推荐
解析代码示例: import net.xfok.rss.parser.Feed; import net.xfok.rss.parser.Rss; ...... String url="http://www.xfok.net/news/rss.xml"; Rss rss=new rss(url); List<Feed> feeds=rss.getFeeds(); ...... 欢迎...
总结来说,Android中的RSS解析涉及网络请求、XML解析、UI展示以及图片加载等多个技术点。`RssSaxActivity3.java`和`RssSaxParser.java`这两个文件分别处理了UI逻辑和数据解析,通过SAX解析器高效地处理XML数据,结合...
在Android平台上开发RSS阅读器是一项常见且实用的任务,它能够帮助用户轻松获取并阅读网络上的RSS订阅源。这个"RSS.zip_RSS_RSS Java_android RSS_rss android_rss android"项目,显然是一款针对Android设备的RSS...
《基于新浪RSS的Android RSS阅读器源码解析与学习指南》 RSS(Really Simple Syndication)是一种内容聚合格式,常用于新闻、博客等网站,让用户能够方便地获取和订阅更新内容。在移动设备上,RSS阅读器应用是访问...
源码分析有助于开发者理解RSS订阅和解析的过程,以及如何在Android环境下构建一个功能完善的新闻阅读应用。以下是对该源码中涉及的关键知识点的详细说明: 1. **RSS(Really Simple Syndication)**: RSS是一种XML...
在Android平台上,RSS阅读器是一种常见的应用,它允许用户订阅并获取来自各种在线新闻源、博客和其他内容提供者的更新。这个“Android软件RSS阅读器源代码”提供了开发此类应用的具体实现,是学习和理解Android应用...
在Android平台上开发RSS阅读器应用时,源码的分析与理解是至关重要的。"android rss源码"这个项目可能是为了帮助开发者了解如何在较低版本的Android(低于0.9)中实现RSS订阅和解析功能。RSS(Really Simple ...
在Android平台上,RSS阅读器是一种常见的应用,它允许用户订阅并查看来自不同源的RSS feed,如新浪新闻。本文将详细解析一个简单的新浪RSS阅读器的实现,主要关注其核心功能——阅读文字新闻。 首先,我们需要理解...
在Android平台上,RSS阅读器是一种常见的应用,它允许用户订阅并查看来自不同网站的RSS feed。这个实例将深入探讨如何构建一个基本的RSS阅读器应用,涵盖了从解析XML数据到在用户界面展示的关键技术。 首先,RSS...
在这个"android源代码 Rss阅读器"项目中,开发者提供了一个自编写的源代码实例,旨在帮助初学者和经验丰富的开发者了解如何在Android上构建一个功能完善的RSS阅读器。 首先,我们来深入理解RSS(Really Simple ...
《Android源码解析:Rss订阅源码Demo》 在移动开发领域,Android以其开源、灵活的特性,深受开发者喜爱。对于许多应用来说,实时获取并展示新闻资讯是必不可少的功能,而RSS(Really Simple Syndication)订阅就是...
Android RSS阅读器源码是一个专门为Android平台设计的应用程序,它能解析RSS feed并显示在用户友好的界面上。下面我们将深入探讨该源码中的关键知识点。 1. **XML解析**: Android RSS阅读器首先需要处理XML文件,...
在本教程中,我们将深入探讨如何使用Android开发一个RSS阅读器应用。RSS(Really Simple Syndication)是一种数据格式,用于发布新闻、博客和其他定期更新的内容。RSS阅读器可以帮助用户订阅并集中阅读这些内容,...
通过以上知识点的学习和实践,开发者不仅可以掌握RSS阅读器的开发,还能提升在Android平台上的综合开发能力,包括网络编程、数据处理、UI设计和性能优化等方面。同时,利用类似“www.heyjava.com.url”这样的资源,...
RSS(Really Simple Syndication)作为一种标准化的格式,用于聚合网站上的内容,并让用户能够订阅这些内容更新。随着移动互联网的发展,RSS阅读器成为了一个重要的应用领域。Android平台作为当今最流行的移动操作...
基于Android平台的RSS阅读器在当前市场上的数量有限,且多数产品在功能上存在不足,如无法有效过滤无关信息,导致用户消耗额外的移动数据流量。 #### 三、关键技术介绍 - **Android系统架构**: - Android系统由...
本示例主要探讨如何在iPhone应用中解析XML结构的RSS feed,以便将新闻标题展示在表格视图中。 首先,让我们了解XML的基本概念。XML是一种标记语言,用于描述数据的结构和内容。它使用自定义的标签来表示数据,使得...
在IT行业中,RSS(Really Simple Syndication)是一种用于发布和订阅网络内容的标准化格式,它使得用户无需直接访问各个网站就能获取更新的信息。一个Android RSS阅读器应用是专门设计用来帮助用户管理和阅读RSS源的...
为了让开发者能够利用Android平台的便利性,本教程《android_RSS开发教程》将会详细介绍如何使用Android Developer Tools,进行RSS的读取、解析和显示。这不仅为Android平台提供了有效的信息获取方式,还对XML数据...
本文主要介绍了基于Android平台的RSS阅读器的开发过程,旨在满足人们对外界信息了解的需求。该系统是在Android平台下设计的,在Google Android平台的SDK 2.1环境下,运用Eclipse进行开发。 Android平台的相关理论...