- # Unless required by applicable law or agreed to in writing, software
- # distributed under the License is distributed on an "AS IS" BASIS,
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- # See the License for the specific language governing permissions and
- # limitations under the License.
- #
- datetime.extra.masks=yyyy-MM-dd HH:mm:ss|yyyy-MM-dd HH:mm
# Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # datetime.extra.masks=yyyy-MM-dd HH:mm:ss|yyyy-MM-dd HH:mm
这个是我在用 ROME时候,因为163和天极时间解析问题 而在ROME发布包里修改后可以的,因为ROME本身提供了这样的支持, 还有就是现在baidu解析上还有问题(在这里感谢下netbus )
如果哪位朋友知道 请指教......
在这里顺便介绍下ROME这个lib:
ROME是一个基于Java的开源程序包。ROME提供了一组Atom/RSS工具类,以使得用Java可以更方便和快捷的来操作大部分Syndication格式数据。目前最新版本为0.9,已经支持的格式包括:RSS 0.90, RSS 0.91 Netscape, RSS 0.91 Userland, RSS 0.92, RSS 0.93, RSS 0.94, RSS 1.0, RSS 2.0, Atom 0.3 和 Atom 1.0。
ROME包含了一组解析器和生成器,以使得在程序中不仅能够方便的解析各种格式的数据,也可以方便的生成出所指定格式的数据。ROME的解析器和生成器是配合使用的,解析器在解析完源数据后,会生成一个ROME提供的中间对象(SyndFeed),这个对象包括了源数据中的所有信息,然后生成器以这个对象(SyndFeed)作为媒介,输出成程序所指定的数据格式。
使用ROME的解析器对读取一个Feed的操作是非常简单的,解析器可以从一个网址、一个本地文件或文件流中读取转换数据:
- URL feedUrl = new URL("http://www.java.com/rss.xml");
- SyndFeedInput input = new SyndFeedInput();
- SyndFeed feed = input.build(new XmlReader(feedUrl));
URL feedUrl = new URL("http://www.java.com/rss.xml"); SyndFeedInput input = new SyndFeedInput(); SyndFeed feed = input.build(new XmlReader(feedUrl));
此时,就把http://www.java.com/rss.xml这个地址的Feed数据转换成了ROME的对象SyndFeed。要将这个SyndFeed重新转换生成为指定的Syndication格式数据,操作也是比较简单的:
- Writer writer = new FileWriter("./test.xml");
- feed.setFeedType(feedType); // 设定feed输出的格式
- SyndFeedOutput output = new SyndFeedOutput();
- output.output(feed, writer);
- writer.close();
Writer writer = new FileWriter("./test.xml"); feed.setFeedType(feedType); // 设定feed输出的格式 SyndFeedOutput output = new SyndFeedOutput(); output.output(feed, writer); writer.close();
以上是演示了如何从一个存在的Feed地址里读取解析到再输出生成一个Feed的过程。实际上,在ROME里,还可以直接操作SyndFeed来构造Feed数据:
- // 构造一个SyndFeed新对象
- SyndFeed feed = new SyndFeedImpl();
- // 设置Feed类型
- feed.setFeedType(feedType);
- // 设置Feed基本信息
- feed.setTitle("测试Feed");
- feed.setLink("http://www.thedevlog.com");
- feed.setDescription("测试使用ROME来构造Feed数据");
- // 构造Feed items列表
- List entries = new ArrayList();
- SyndEntry entry;
- SyndContent description;
- // 构造一个新的节点并添加到列表中
- entry = new SyndEntryImpl();
- entry.setTitle("ROME v1.0");
- entry.setLink("http://wiki.java.net/bin/view/Javawsxml/Rome01");
- entry.setPublishedDate(DATE_PARSER.parse("2004-06-08"));
- description = new SyndContentImpl();
- description.setType("text/plain");
- description.setValue("Initial release of ROME");
- entry.setDescription(description);
- entries.add(entry);
- // 设置更多的节点...
- // 将节点列表赋给feed对象
- feed.setEntries(entries);
- // 输出feed
- Writer writer = new FileWriter("./test.xml");
- SyndFeedOutput output = new SyndFeedOutput();
- output.output(feed, writer);
- writer.close();
// 构造一个SyndFeed新对象 SyndFeed feed = new SyndFeedImpl(); // 设置Feed类型 feed.setFeedType(feedType); // 设置Feed基本信息 feed.setTitle("测试Feed"); feed.setLink("http://www.thedevlog.com"); feed.setDescription("测试使用ROME来构造Feed数据"); // 构造Feed items列表 List entries = new ArrayList(); SyndEntry entry; SyndContent description; // 构造一个新的节点并添加到列表中 entry = new SyndEntryImpl(); entry.setTitle("ROME v1.0"); entry.setLink("http://wiki.java.net/bin/view/Javawsxml/Rome01"); entry.setPublishedDate(DATE_PARSER.parse("2004-06-08")); description = new SyndContentImpl(); description.setType("text/plain"); description.setValue("Initial release of ROME"); entry.setDescription(description); entries.add(entry); // 设置更多的节点... // 将节点列表赋给feed对象 feed.setEntries(entries); // 输出feed Writer writer = new FileWriter("./test.xml"); SyndFeedOutput output = new SyndFeedOutput(); output.output(feed, writer); writer.close();
整个过程是十分简单的。除了上述功能外,通过ROME还可以将两个或多个Feed合并为一个Feed,将一个Feed拆分为多个Feed等。
更多内容和使用方法,请参考ROME的官方资料:ROME,开发文档教程,API文档。