`

Android中的Atom学习

阅读更多

 

1.Atom的简单介绍:

由于RSS不是一个真正的开放的标准,而且存在这混乱的版本号,所以相关领域的专家就坐下来一起研发下一代的开放标准的格式。正是这样的一个目的造就了Atom最大的优点——开放标准。Atom是由庞大的委员会磋商而成的一个社区标准。

atom具体的标准请参阅官方网站

http://www.atomenabled.org/developers/syndication/atom-format-spec.php

 

2.Atom的规范格式:

|-AtomFEED常用属性

       |-Author         作者:必须包括一个名多个

       |-Category      类型:可能会很多

       |-Contributor   投稿者:可能会有很多个

       |-Generator     发生器:调用的程序,绝对不能是多个

       |-Icon             图标:绝对不能包含多个

       |-Id                必须包含一个准备的ID

       |-Link             链接:应该有个属性ref=self,因为此链接会作为首选地址!绝对不能有多个属性ref=alternate;也可以有额外的链接属性,但是它只是在其他的的基础上做描述

       |-Rights          版权:绝对不能有多个

       |-Subtitle        副标题:绝对不能有多个

       |-Title             主标题:必须是一个准确的标题

       |-Updated              最近更新时间:必须是一个准确的;

 

3.代码说明

3.1配置定位环境

因为要用到网络的资源,所以必须在AndroidManifest.xml里加入权限

<uses-permission android:name="android.permission.INTERNET" /> 

因为考虑到可能要读取不同的类型的xml文件,也就是兼容rssatom的各个版本,所以为了统一,采用了外部的jar包,其中有rome.jarjdom.jarrome.jar帮我们封装了处理不同类型的xml的分歧。统一了代码。

 

3.2.编写业务逻辑代码

(1) 编写ChannelVO

以下是Atom封装的类,封装了获得Atom的信息,将atom对象化

public class ChannelVO {
	private String title;//频道的标题
	private String description;//频道的描述
	private String link;//频道的连接
	private String uri;//频道的统一资源标示符
	@SuppressWarnings("unchecked")
	private List items;//所有的Item
	private String language;//标示的是语言
	private String copyright;//版权信息
	private Date pubDate;//发布日趋
	private String feedType;//类型
	private String encoding;//编码类型

……
	//下边的是上边的属性的一系列get(),set()方法
	……
}

 (2) 编写的ChannelItemVO封转了Item的信息,将Item对象化。

public class ChannelItemVO {
	private String title;// Rss文件中Item的标题
	private String link;// Rss文件中Item对应的连接
	private String description;// Item的描述
	private Date pubDate;// Item发布的时间
	private String author;// Item作者
private String category;// Item所属的频道范畴

……
	//下边的是上边的属性的一系列get(),set()方法
	……
}

 (3)编写测试类FeedWriter通过romejar包可以很容易的实现添加feed,通过SyndFeed的实例可以创建feed种子,然后通过各种的set()方法,把要添加的内容一个个的添加到feed上,最后流的形式建立新的xml文件。

String feedType = args[0];
String fileName = args[1];
DateFormat dateParser = new SimpleDateFormat(DATE_FORMAT);
SyndFeed feed = new SyndFeedImpl(); // feed流
feed.setFeedType(feedType); // 设置rss版本
feed.setTitle("Sample Feed (created with Rome)"); // <title>设置标题
feed.setLink("http://www.csdn.net"); // <link>
feed.setDescription("This feed has been created using Rome (Java syndication utilities");
List<SyndEntryImpl> entries = new ArrayList<SyndEntryImpl>();
SyndEntry entry;
SyndContent description;
entry = new SyndEntryImpl(); // 子节点
entry.setTitle("Rome v1.0");
entry.setLink("http://www.csdn.net");
entry.setPublishedDate(dateParser.parse("2004-06-08"));
description = new SyndContentImpl();
description.setType("text/plain");
description.setValue("Initial release of Rome");
entry.setDescription(description);
entries.add((SyndEntryImpl) entry);
entry = new SyndEntryImpl();
entry.setTitle("Rome v2.0");
entry.setLink("http://ww.csdn.net");
entry.setPublishedDate(dateParser.parse("2004-06-16"));
description = new SyndContentImpl(); // 描述
description.setType("text/xml");
description.setValue("Bug fixes, < xml>XML< /xml> minor API changes and some new features");
entry.setDescription(description);
entries.add((SyndEntryImpl) entry);
entry = new SyndEntryImpl();
entry.setTitle("Rome v3.0");
entry.setLink("http://www.csdn.net");
entry.setPublishedDate(dateParser.parse("2004-07-27"));
description = new SyndContentImpl();
description.setType("text/html");
description.setValue("< p>More Bug fixes, mor API changes, some new features and some Unit testing< /p>"
				+ "< p>For details check the < a href=\"http://www.csdn.net\">Changes Log< /a>< /p>");
entry.setDescription(description);
entries.add((SyndEntryImpl) entry);
feed.setEntries(entries); // 设置子节点
Writer writer = new FileWriter(fileName);
SyndFeedOutput output = new SyndFeedOutput();
output.output(feed, writer); // 写到文件中去
writer.close(); 

 (4)ReaderRSS是测试是否可以兼容的浏览不同的xml文件。通过本地的三个不同的文件:

String url = "http://10.167.12.184:8080/examples/images/RSS1.0.xml";
String url = "http://10.167.12.184:8080/examples/images/RSS2.0.xml";
String url = "http://10.167.12.184:8080/examples/images/ATOM.xml";

 测试出rome已经帮我们封装好了我们可以不用关心xml的类型

(5)通过sax解析也能够直接的读取atomfeed方法和rss一样。

 

分享到:
评论

相关推荐

    Android新闻阅读器

    《Android新闻阅读器:数据抓取与Java编程实践》 在移动互联网时代,新闻阅读器应用已经成为用户获取信息的重要渠道。...在实际项目中,不断学习和实践,才能提升开发能力,满足用户日益增长的需求。

    android-x86-emulator-itamae:在DigitalOcean的Ubuntu上安装Android x86 Atom模拟器

    在本教程中,我们将深入探讨如何在DigitalOcean的Ubuntu服务器上使用Ruby自动化工具Itamae安装Android x86 Atom模拟器。这个过程涉及到多个步骤,包括环境准备、依赖安装、镜像下载以及模拟器配置。让我们逐一解析...

    Embedded Android Porting, Extending, and Customizing 2013最新版

    ### 嵌入式Android移植、扩展与定制 ...通过以上内容的学习,开发者不仅可以获得关于嵌入式Android系统移植、扩展和定制的全面知识,还可以学习到许多实用的技巧和方法,帮助他们在实际项目中更加高效地工作。

    android 葵花宝典

    这部分讲述了如何在Android应用中连接网络,获取和发送数据,包括使用HTTP请求访问Web服务,处理JSON或XML数据,以及实现RSS或Atom Feed订阅。 通过阅读《Android葵花宝典》,开发者不仅可以掌握Android开发的基本...

    Android-简约android播客应用程序

    最后,为了提高应用的可用性,开发者可能会考虑集成RSS或Atom解析库,如Android-Podcast-Provider,来自动获取和更新播客源的元数据和内容。此外,网络请求可能使用了Retrofit或OkHttp这样的库,以简化API调用和错误...

    Android应用源码之android上实现mp4文件的高效率切割。.zip

    通过分析和学习这个项目,开发者可以掌握在Android环境下高效处理多媒体文件的技巧,这对于创建涉及视频编辑、直播、流媒体等应用场景的应用来说是非常宝贵的。同时,这也为理解Android系统内部的工作原理和文件操作...

    搭建android开发环境

    7. **持续学习和更新**:Android系统和技术不断演进,作为一名开发者,需要关注最新的开发工具和API,保持学习和实践,以便更好地适应行业发展。 以上就是搭建Android开发环境的基本步骤和相关知识点。在这个过程中...

    Android开发环境安装过程

    在Android Studio中,可以通过"Preferences"(MacOS)或"Settings"(Windows/Linux)找到SDK管理器。在这里,你可以选择要安装的Android版本,通常建议安装最新的稳定版API以及几个低版本的API,以便于测试不同版本...

    android博客阅读器源码

    【Android博客阅读器源码详解】 Android博客阅读器是一...通过分析这个Android博客阅读器的源码,开发者可以学习到如何在Android平台上实现一个功能完整的应用,提升自己的编程技能,同时理解Android开发的最佳实践。

    android应用权限列表

    通过学习这个示例代码,开发者可以更好地理解如何在自己的应用中处理权限相关问题。 ### 6. 权限最佳实践 1. 只申请必要的权限:避免请求与应用功能无关的权限,以免引起用户反感。 2. 明确解释权限用途:在请求权...

    Android-NewsZero一个关于阅读分享新闻的App

    **Android-NewsZero App详解** `Android-NewsZero` 是一款专为阅读和分享新闻而设计的应用程序,它集成...通过分析和编译这个源代码,开发者可以深入学习Android应用的开发流程,理解如何将上述技术应用于实际项目中。

    Android-Karchitec使用GoogleAndroid架构组件库实现的KotlinRSS阅读器

    2. **LiveData**:它是Android架构组件中的一个观察者模式实现,允许数据在后台线程中更新,并自动通知相关的UI组件。在RSS阅读器中,LiveData可能用于实时更新RSS源的最新文章,确保UI始终显示最新的内容。 3. **...

    ffmpeg_3.4.2_android x86_64版本

    这个"ffmpeg_3.4.2_android x86_64版本"是一个特别针对Android x86_64架构编译的FFmpeg库,这意味着它可以运行在64位Android设备上,如Intel Atom处理器的Android平板或手机。 交叉编译是将源代码在一种平台上编译...

    安卓Android源码——android上实现mp4文件的高效率切割。.rar

    这个压缩包文件提供了一套可能的解决方案,包括源代码和相关文档,以帮助开发者理解如何在Android环境中实现MP4文件的高效切割。以下是关于这个主题的详细知识: 1. **MP4文件结构**: MP4(MPEG-4 Part 14)是一...

    Openblas_x86_64.zip

    这个OpenBLAS_x86_64.zip压缩包特别针对Android平台上的Atom CPU进行了编译,提供适用于64位x86架构的.so动态链接库、.a静态库以及CMake配置文件。 在Android开发中,OpenBLAS能够显著提升计算密集型任务的性能,...

    x86-19_r06.zip

    3. 教育和培训:在教学环境中,通过模拟器可以让学生在没有实体设备的情况下,学习和实践Android应用开发。 总结,Intel x86 Atom System Image是Android SDK中不可或缺的一部分,它提供了高效、兼容的x86平台...

    aggregator-android:适用于Android的新闻阅读器

    综上所述,aggregator-android项目涵盖了Android应用开发的多个方面,包括UI设计、网络通信、数据解析、数据存储、权限管理以及后台任务调度,为开发者提供了一个实践和学习Android开发的全面案例。

    Atom:使用Unity编写的休闲游戏-正在进行中

    综上所述,“Atom”项目是一个集Unity2D特性、C#编程、游戏设计和优化于一体的实例,对于想要学习Unity游戏开发的人来说,这是一个很好的实践和学习资源。通过深入分析和理解该项目,开发者可以提升自己的技能,创作...

Global site tag (gtag.js) - Google Analytics