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

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

 2010-04-06 00:00:00 来源:WEB开发网   
核心提示: SAX 示例SAX 解析器并不像 DOM 解析器一样返回一个精密的 document 对象,相反,Geronimo 叛逆者: 使用集成软件包:Codehaus 的 Woodstox(5),SAX 解析器将在遍历 XML 文档时给出一系列事件,必须通过实现接口或者扩展 DefaultHandler

SAX 示例

SAX 解析器并不像 DOM 解析器一样返回一个精密的 document 对象。相反,SAX 解析器将在遍历 XML 文档时给出一系列事件。必须通过实现接口或者扩展 DefaultHandler 类并根据需要重写它的方法,创建这些事件的 handler。清单 4 将演示 Flickr XML 文档的 SAX 解析。

清单 4. 用 SAX 进行解析

        SAXParser parser = SAXParserFactory.newInstance().newSAXParser(); 
DefaultHandler handler = new DefaultHandler(){ 
   @Override 
   public void startElement(String uri, String localName, 
   String qName, Attributes attributes) throws SAXException { 
     if (qName.equalsIgnoreCase("photo")){ 
        String title = attributes.getValue("title"); 
        String id = attributes.getValue("id"); 
        // map is static so we can access it here 
        map.put(id, title); 
     } 
   } 
}; 
parser.parse(input, handler); 

很明显,清单 4 中所示的代码比 清单 3 中的 DOM 代码难于理解一些。您需要使用 ContentHandler 来处理 SAX 事件,因此创建了 DefaultHandler 并重写了它的 startElement 回调方法。查看它是不是一个照片元素,并且如果是照片元素,则访问它的 title 和 id 属性。

代码十分简洁并且在运行时非常高效。它仅存储您所关心的数据,并且只遍历文档一次。它是更为复杂的代码,要求扩展类才能注册事件侦听程序。如果能够高效地解析 XML 而且可以使用更直观的编程模型那就太好了。StAX 于是应运而生。

上一页  1 2 3 4 5 6 7  下一页

Tags:Geronimo 叛逆者 使用

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