快速业务通道

使用Java技术将Atom转换为RDF - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-25
m() 和 createRdf()。第一个方法是阅读器,第二个方法是写入器。

为确保从 Atom 提要中读取的信息能够用于 AtomToRdf 对象中的所有方法,必须声明两个局部可用的对象变量,如 清单 5 所示。一个是 Channel 类的一个实例(称为 channel)。另一个是包含一个或多个 Item 对象的 List 对象(称为 itemList)。

清单 6 显示了 parseAtom() 方法的开始部分。该方法使用 StAX 来解析 Atom 提要。这段代码首先实例化一个新的 XMLInputFactory 对象,然后打开一个包含 Atom 格式的 Twitter public timeline 的 InputStream 对象。这个 StAX InputFactory 从 InputStream 创建一个 XMLEventReader 对象。在 “拖动—解析” Atom 提要的过程中,StAX 用这个对象来识别 事件。事件的一些例子比如文档启动、元素启动和元素结束。

清单 6. 开始解析 Atom

 private void parseAtom() {     try {       XMLInputFactory inputFactory = XMLInputFactory.newInstance();       InputStream in = new URL("http://twitter.com/statuses/public_timeline.atom")    .openStream();       XMLEventReader eventReader = inputFactory.createXMLEventReader(in);       boolean inEntry = false;       Item currentItem = null;       while (eventReader.hasNext()) { ...

要处理这两个 <title> 元素,这个 isEntry Boolean 用于区分它们。如果 Boolean 为 True,解析器检查 <title> 元素,该元素是 <entry> 的一个子元素。

变量 currentItem 用于存储输出文件中的每个 <item> 节中将包含的信息。每次解析器遇到输入文件中的另一个 <entry> 元素时,一个新的 currentItem 对象将被实例化。每次解析器遇到 <entry> 元素的结尾时,现有的 currentItem 对象添加到 Item 对象列表(itemList)。

最后,清单 6 开始解析器循环。本质上,那条 while 语句的意思是 “只要解析器遇到 任何事件,它将重复执行大括号({})里面的代码。”

急需解决的问题是:将遇到哪种事件?如何处理这些事件?请看 清单 7。

清单 7. 解析 Title 元素

if (event.isStartElement()) {   StartElement startElement = event.asStartElement();   if (event.asStartElement().getName().getLocalPart().equals("title")) {      event = eventReader.nextEvent();      String title = event.asCharacters().getData();      if (!inEntry) {      channel.setTitle(title);      } else {      currentItem.setTitle(title);      }      continue;   } ...

当这段代码遇到一个事件时,它首先检查这个事件是不是一个新元素的开端。如果是,则一个 StartElement 对象被实例化。然后检查这个元素的名字。如果这个元素的名字是 title,这段代码将把该元素的实际内容放到字符串变量 title 中。

还记得 isEntry 变量吗?这个变量将在这里使用,因为 — 您可能还记得 — 命名为 title 的元素出现在 Atom 提要的两个位置。如果 isEntry 设置为 True,代码知道检查一个文档的标题,而不是整个提要的标题。对于前一种情况,将设置 currentItem 对象的 title 属性;对于后一种情况,将设置 channel 对象的 title 属性。

最后,continue 语句是一条标准的 Java 语句,它的意思是 “只要到此就继续循环”。换句话说,当代码处理完这个事件后,将开始寻找更多事件。

如果您查看整个代码,您将发现有许多代码块与 清单 7 中的代码类似。

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号