1.Atom的简单介绍:
由于RSS不是一个真正的开放的标准,而且存在这混乱的版本号,所以相关领域的专家就坐下来一起研发下一代的开放标准的格式。正是这样的一个目的造就了Atom最大的优点——开放标准。Atom是由庞大的委员会磋商而成的一个社区标准。
atom具体的标准请参阅官方网站
http://www.atomenabled.org/developers/syndication/atom-format-spec.php
2.Atom的规范格式:
|-Atom的FEED常用属性
|-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文件,也就是兼容rss和atom的各个版本,所以为了统一,采用了外部的jar包,其中有rome.jar和jdom.jar,rome.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通过rome的jar包可以很容易的实现添加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解析也能够直接的读取atom的feed方法和rss一样。
分享到:
相关推荐
### 针对Android的Java基础学习 #### Java的故事与编程环境搭建 ##### Java的故事 Java作为一门重要的编程语言,在全球范围内广泛应用,特别是在移动开发领域,对于Android开发者来说更是必备技能之一。了解Java...
《Android新闻阅读器:数据抓取与Java编程实践》 在移动互联网时代,新闻阅读器应用已经成为用户获取信息的重要渠道。...在实际项目中,不断学习和实践,才能提升开发能力,满足用户日益增长的需求。
在本教程中,我们将深入探讨如何在DigitalOcean的Ubuntu服务器上使用Ruby自动化工具Itamae安装Android x86 Atom模拟器。这个过程涉及到多个步骤,包括环境准备、依赖安装、镜像下载以及模拟器配置。让我们逐一解析...
### 嵌入式Android移植、扩展与定制 ...通过以上内容的学习,开发者不仅可以获得关于嵌入式Android系统移植、扩展和定制的全面知识,还可以学习到许多实用的技巧和方法,帮助他们在实际项目中更加高效地工作。
这部分讲述了如何在Android应用中连接网络,获取和发送数据,包括使用HTTP请求访问Web服务,处理JSON或XML数据,以及实现RSS或Atom Feed订阅。 通过阅读《Android葵花宝典》,开发者不仅可以掌握Android开发的基本...
最后,为了提高应用的可用性,开发者可能会考虑集成RSS或Atom解析库,如Android-Podcast-Provider,来自动获取和更新播客源的元数据和内容。此外,网络请求可能使用了Retrofit或OkHttp这样的库,以简化API调用和错误...
通过分析和学习这个项目,开发者可以掌握在Android环境下高效处理多媒体文件的技巧,这对于创建涉及视频编辑、直播、流媒体等应用场景的应用来说是非常宝贵的。同时,这也为理解Android系统内部的工作原理和文件操作...
7. **持续学习和更新**:Android系统和技术不断演进,作为一名开发者,需要关注最新的开发工具和API,保持学习和实践,以便更好地适应行业发展。 以上就是搭建Android开发环境的基本步骤和相关知识点。在这个过程中...
在Android Studio中,可以通过"Preferences"(MacOS)或"Settings"(Windows/Linux)找到SDK管理器。在这里,你可以选择要安装的Android版本,通常建议安装最新的稳定版API以及几个低版本的API,以便于测试不同版本...
【Android博客阅读器源码详解】 Android博客阅读器是一...通过分析这个Android博客阅读器的源码,开发者可以学习到如何在Android平台上实现一个功能完整的应用,提升自己的编程技能,同时理解Android开发的最佳实践。
通过学习这个示例代码,开发者可以更好地理解如何在自己的应用中处理权限相关问题。 ### 6. 权限最佳实践 1. 只申请必要的权限:避免请求与应用功能无关的权限,以免引起用户反感。 2. 明确解释权限用途:在请求权...
**Android-NewsZero App详解** `Android-NewsZero` 是一款专为阅读和分享新闻而设计的应用程序,它集成...通过分析和编译这个源代码,开发者可以深入学习Android应用的开发流程,理解如何将上述技术应用于实际项目中。
2. **LiveData**:它是Android架构组件中的一个观察者模式实现,允许数据在后台线程中更新,并自动通知相关的UI组件。在RSS阅读器中,LiveData可能用于实时更新RSS源的最新文章,确保UI始终显示最新的内容。 3. **...
这个"ffmpeg_3.4.2_android x86_64版本"是一个特别针对Android x86_64架构编译的FFmpeg库,这意味着它可以运行在64位Android设备上,如Intel Atom处理器的Android平板或手机。 交叉编译是将源代码在一种平台上编译...
这个压缩包文件提供了一套可能的解决方案,包括源代码和相关文档,以帮助开发者理解如何在Android环境中实现MP4文件的高效切割。以下是关于这个主题的详细知识: 1. **MP4文件结构**: MP4(MPEG-4 Part 14)是一...
这个OpenBLAS_x86_64.zip压缩包特别针对Android平台上的Atom CPU进行了编译,提供适用于64位x86架构的.so动态链接库、.a静态库以及CMake配置文件。 在Android开发中,OpenBLAS能够显著提升计算密集型任务的性能,...
3. 教育和培训:在教学环境中,通过模拟器可以让学生在没有实体设备的情况下,学习和实践Android应用开发。 总结,Intel x86 Atom System Image是Android SDK中不可或缺的一部分,它提供了高效、兼容的x86平台...
综上所述,aggregator-android项目涵盖了Android应用开发的多个方面,包括UI设计、网络通信、数据解析、数据存储、权限管理以及后台任务调度,为开发者提供了一个实践和学习Android开发的全面案例。
综上所述,“Atom”项目是一个集Unity2D特性、C#编程、游戏设计和优化于一体的实例,对于想要学习Unity游戏开发的人来说,这是一个很好的实践和学习资源。通过深入分析和理解该项目,开发者可以提升自己的技能,创作...