快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-25
区别在于每个代码块检查 Atom 提要中的一个不同元素,然后在正确的对象上设置适当的实例变量。

循环结束时,代码将拥有一个完全填充的 Channel 对象和一个完全填充的 Item 对象列表。这些对象将被读取,其中的信息将用于创建 RDF 文件。

在检查代码以创建 RDF 文档之前,首先必须理解已在 AtomToRdf 中定义的一些常量(见 清单 8)。

清单 8. 在 AtomToRdf 中定义的常量

private static final String DUBLIN_CORE_PREFIX = "dc"; private static final String DUBLIN_CORE_URI = "http://purl.org/dc/elements/1.1/"; private static final String RDF_PREFIX = "rdf"; private static final String RDF_URI = "http://www.w3.org/1999/02/22-rdf-syntax-ns#"; private static final String RSS_URI  = "http://purl.org/rss/1.0/"; 

使用Java技术将Atom转换为RDF(6)

时间:2009-10-14 ibm Brian M. Carey

为何需要这些常量呢?让我们回头看看 清单 1 中的 RDF 示例文档。您将看到 RDF 输出需要名称空间,在很多情况下,这些名称空间是重复的。这些常量能够使您更轻松地引用那些名称空间和它们对应的 URI。清单 9 中的代码开始输出。

清单 9. 开始输出

  private void createRdf() {   try {  XMLOutputFactory xmlof = XMLOutputFactory.newInstance();    XMLStreamWriter xmlw = xmlof.createXMLStreamWriter   (new FileOutputStream ("c:/twitter.rdf"));    xmlw.writeStartElement(RDF_PREFIX, "RDF", RDF_URI);    xmlw.writeNamespace(RDF_PREFIX, RDF_URI);    xmlw.writeNamespace("",RSS_URI);    xmlw.writeNamespace(DUBLIN_CORE_PREFIX, DUBLIN_CORE_URI);    xmlw.writeCharacters("\n");    xmlw.writeCharacters("  ");    writeChannel(xmlw);    writeItems(xmlw);    xmlw.writeCharacters("\n");    xmlw.writeEndElement();    xmlw.writeEndDocument();    xmlw.close();    } catch (Exception e) {    e.printStackTrace();    }   }

再次使用了 StAX API。区别在于这一次它用于生成输出而不是读取输入。这段代码首先实例化一个新的 XMLOutputFactory 对象,然后从一个 FileOutputStream 对象创建一个 XMLStreamWriter,该对象指向 c:/twitter.rdf(输出文件的名称和位置)。您可能需要根据自己的环境更改文件位置。

这段代码开始写出这些元素。它首先从根元素开始,并对根元素使用前缀 rdf 和它对应的 URI。下面三行定义与根元素关联的各种名称空间和相应的前缀。注意,RSS_URI 常量代表默认前缀,因此一个空字符串用作前缀。

接下来两行的目的是格式化,使输出更适合人类阅读。您将在整个输出代码中看到大量这种情况。

下面两行调用单独的方法,它们用作输出例程的 “重要部分”。第一种方法写出 <channel> 节,第二种方法写出每个 <item> 节。

下面几行关闭根元素和文档本身。最后,XMLStreamWriter 对象关闭。

您可能注意到 清单 10 中的一种模式。首先,创建一个带有恰当 about 属性的父元素(通常命名为 channel)。注意,about 属性需要 rdf 名称空间。about 属性的值只是一个 URL,它指向 RDF Site Syndication 中包含的信息。为此,我使用了 Twitter 的 URL。

清单 10. writeChannel() 方法

  private void writeChannel(XMLStreamWriter xmlw) throws Exception {  xmlw.writeStartElement("cha

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号