WEB开发网
开发学院软件开发Java Geronimo 叛逆者: 使用集成软件包:Codehaus 的 W... 阅读

Geronimo 叛逆者: 使用集成软件包:Codehaus 的 Woodstox

 2010-04-06 00:00:00 来源:WEB开发网   
核心提示: 使用 Woodstox 作为 Geronimo 的 StAX 提供程序现在您已经看到了 StAX 解析的优点,它被广泛公认为 XML 技术中的重大进步,Geronimo 叛逆者: 使用集成软件包:Codehaus 的 Woodstox(7),因而,当它成为 Java EE 5 规范的一部分时并不

使用 Woodstox 作为 Geronimo 的 StAX 提供程序

现在您已经看到了 StAX 解析的优点。它被广泛公认为 XML 技术中的重大进步。因而,当它成为 Java EE 5 规范的一部分时并不令人惊讶(它甚至还包含在 Java Platform, Standard Edition [Java SE] 6 中)。由于它是 Java EE 5 的一部分,因此它必须由 Geronimo 2.0 来实现。

Geronimo 团队十分幸运,有若干个开源 StAX 实现可供选择。团队选取了 Woodstox 作为 Geronimo 所附带的 StAX 解析器。Woodstox 被视为执行效果最佳的 StAX 实现之一。此外,Woodstox 是在 Lesser General Public License (LGPL) 和 Apache 2.0 许可下双重授权的。因此您可以不受任何限制地将 Woodstox 及其源代码集成到 Geronimo 中。

应用程序性能调优:发挥 Woodstox 的最大功效

性能很明显是 Woodstox 带给 Geronimo 的优点之一。就像使用其他高性能技术一样,了解如何使用 Woodstox 才能获得最佳性能非常重要。清单 5 中的代码将使用 XMLEventReader 接口,这是 StAX 规范包含的一个高级 API。用于获得高性能的较低级 API 是 XMLStreamReader 接口。清单 6 显示了使用此接口的 StAX 解析器。

清单 6. 用 XMLStreamReader 进行 StAX 解析

        Map<String,String> map = new HashMap<String,String>(); 
XMLInputFactory inputFactory = XMLInputFactory.newInstance(); 
QName qId = new QName("id"); 
QName qTitle = new QName("title"); 
QName qPhoto = new QName("photo"); 
XMLStreamReader reader = inputFactory.createXMLStreamReader(input); 
while (reader.hasNext()){ 
  int event = reader.next(); 
  if (event == START_ELEMENT){ // statically included constant from XMLStreamConstants 
     if (reader.getName().equals(qPhoto)){ 
        String id = reader.getAttributeValue(null, qId.getLocalPart()); 
        String title = reader.getAttributeValue(null, qTitle.getLocalPart()); 
        map.put(id,title); 
     } 
   } 
} 
reader.close(); 

清单 6 中的代码类似于 清单 5 中的代码;虽然它很明显有些低级,但是您将获得很大的性能提高。

结束语

您已经了解了使用 StAX 解析器解析 XML 文档的一些优点。StAX 在 SAX 与 DOM 之间提供了很好的折衷。您可以通过使用它作为 Geronimo 2.0 的一部分立即利用 StAX。您不但将开始使用 StAX 的直观 pull API,而且将获得在 Woodstox 中使用 StAX 的高性能实现的额外优势。

本文示例源代码或素材下载

上一页  2 3 4 5 6 7 

Tags:Geronimo 叛逆者 使用

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接