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一样。
分享到:
相关推荐
Atom简体中文语言包,Atom简体中文语言包,Atom简体中文语言包
Android模拟器Intel Atom下载安装配置
Atom安卓 Android开发包
atom的中文使用教程, 适合初次使用atom入门的小伙伴。另, 该文档给出了atom配置的方式。 推荐了常用插件
Atom-atom-shortcuts.zip,Learn Atom's shortcuts (cheatsheet)Atom快捷方式包,atom是一个用web技术构建的开源文本编辑器。
Ubuntu中Atom编辑器显示中文乱码的处理方法.docx
atom-one-dark-theme, Atom 黑暗中 Atom的一个黑暗主题来自 Atom.io的黑暗主题 Atom 一个暗色主题这是 Atom的一个端口,来自 Atom.io的一个黑暗主题。 Atom的原始主题在这里可以找到:Atom 一个深色用户界面Atom 一...
Atom-atom-rust.zip,在atom中提供rust语言支持。原子锈,atom是一个用web技术构建的开源文本编辑器。
Atom-atom-hjson.zip,atom中的hjson语言支持atom中的hjson语言支持,atom是一个用web技术构建的开源文本编辑器。
Atom-atom-language-dhall.zip,atom中的dhall语言支持atom中的dhall语言支持,atom是一个用web技术构建的开源文本编辑器。
Atom-atom-kotlin-language.zip,向atom中的kotlin文件添加语法突出显示atom中的kotlin语言支持,atom是一个用web技术构建的开源文本编辑器。
Atom-atom-import-js.zip,用于importjs的atom插件importjs原子包,atom是一个用web技术构建的开源文本编辑器。
特征伯爵同时解析Atom和RSS 1.0 / 2.0 支持RSS扩展(目前为Itunes和Media RSS) 它很轻巧。 除了解析器之外,什么都没有。 它唯一的依赖项是android批注解析器生成易于使用的不可变POJO 在从Android 2.2(API 8)...
Atom-atom-codesandbox.zip,Atom中的代码箱预览Atom的codeSandbox.io,atom是一个用web技术构建的开源文本编辑器。
Atom-atom-code-annotations.zip,将任何内容附加到Atom中的任何代码行代码注释(Atom包),atom是一个用web技术构建的开源文本编辑器。
Atom-axSnippet-Atom.zip,在atom编辑器中使用aidax的代码片段atom编辑器的aidax代码片段,atom是一个用web技术构建的开源文本编辑器。
Atom-jekyll-atom.zip,在atom中使用jekyll的工具和片段的集合杰基尔原子,atom是一个用web技术构建的开源文本编辑器。
Atom-language-css.zip,atom的css包atom中的css语言支持,atom是一个用web技术构建的开源文本编辑器。
Atom-atom-pdf-view.zip,支持在atom中查看pdf文件。PDF查看包,atom是一个用web技术构建的开源文本编辑器。
Atom-atom-language-coldfusion.zip,[deprecated] Adds syntax highlighting and snippets to ColdFusion file in Atom.atom中的coldfusion语言支持,atom是一个用web技术构建的开源文本编辑器。