您的位置:建站学院首页 >> 文章 >> 网页设计 >> XML
使用 Jena 处理 RSS 1.0
作者:Brian McBride
发表时间:2000年9月2日
原文链接: http://www.hpl.hp.co.uk/people/bwm/rdf/jena/rssinjena.htm
译者:dlee
翻译时间:2001年5月26日

    RSS 1.0 是最近宣布的一个格式,顺从于 W3C 的 RDF (资源定义框架),用来分发(distributing) 站点摘要 (site summary) 和企业联合 (syndication) 元数据。一个站点摘要文档的例子可以在规范中找到。Jena 是一套实验性的用来处理 RDF 的 Java API。这篇笔记描述了一个应用程序使用 Jena 来将一个站点摘要文档翻译成 HTML。整个程序的源代码作为 RenderToHTML 可以在 Jena 发布的例子包里得到。

    这篇文章和例子代码基于 RSS 规范候选发布版本1 (Release Candidate 1 version)。
    这个应用程序以创建一个 RDF 模型开始,实际上在内存中是一个 RDF statement 的集合。然后解析站点摘要文档,使用一个 RDF 解析器,并加载 statement 到新创建的模型中。

      Model model = new ModelMem();
      model.read(" http://www.xml.com/xml/news.rss");

    在写出一个样板 HTML 头后,程序列出和处理在输入流中的每个 channel。在 RDF 术语中,channel 是具有一个 rdf:type 属性的 rss:channel 的资源。我们使用 Jena API 来列出具有一个有这个值的 rdf:type 属性的所有的资源。在下面的代码中,假设输出是一个接收 HTML 输出的 PrintWriter。

      ResIterator channels =  model.listSubjectsWithProperty(RDF.type, RSS.channel);
      while (channels.hasNext()) {
          renderChannel(channels.next(), out);
      }

    为了呈现 (render) 一个 channel,程序首先写出它的 title,description 和相关的 image 和 textinput 字段 (如果有的话)。getProperty 方法用来得到 channel 的 title,link 和 description 属性,随后这些可以被呈现为 HTML。

      void renderChannel(Resource channel, PrintStream out)
             throws RDFException {
          String url = null;
          String title = null;
          String desc = null;

          url = channel.getProperty(RSS.link).getString();
          title = channel.getProperty(RSS.title).getString();
          desc = channel.getProperty(RSS.description).getString();

    一个 channel 可以有一个相关联的 image 和 textinput,测试是否存在这些属性和是否需要调用合适的方法来呈现它们是很简单的。

      if (channel.hasProperty(RSS.image)) {
          renderImage(channel.getProperty(RSS.image) .getResource(), out);
      }

本内容共2页  首 页  上一页  下一页  尾 页  当前在第1

Google
 
Web www.cqxw.net