Streaming API for XML (StAX) 简介

来源:互联网 发布:云计算的网络架构术语 编辑:程序博客网 时间:2024/05/16 07:41

         引用:http://www.ibm.com/developerworks/cn/xml/x-stax1.html?S_TACT=105AGX52&S_CMP=techcsdn

        Streaming API for XML (StAX) 是用 Java™ 语言处理 XML 的最新标准。作为一种面向流的方法,无论从性能还是可用性上都优于其他方法,如 DOM 和 SAX。 

      

StAX 概述

从一开始,Java API for XML Processing (JAXP) 就提供了两种方法来处理 XML:文档对象模型(DOM)方法是用标准的对象模型表示 XML 文档;Simple API for XML (SAX) 方法使用应用程序提供的事件处理程序来处理 XML。JSR-173 提出了一种面向流的新方法:Streaming API for XML (StAX)。其最终版本于 2004 年 3 月发布,并成为了 JAXP 1.4(将包含在即将发布的 Java 6 中)的一部分。

 

 

 XMLStreamReader 解析 XML 文档的完整例子

XMLInputFactory factory = XMLInputFactory.newInstance();XMLStreamReader r = factory.createXMLStreamReader(input);try { int event = r.getEventType(); while (true) { switch (event) { case XMLStreamConstants.START_DOCUMENT: out.println("Start Document."); break; case XMLStreamConstants.START_ELEMENT: out.println("Start Element: " + r.getName()); for(int i = 0, n = r.getAttributeCount(); i < n; ++i) out.println("Attribute: " + r.getAttributeName(i)  + "=" + r.getAttributeValue(i));  break; case XMLStreamConstants.CHARACTERS: if (r.isWhiteSpace()) break;  out.println("Text: " + r.getText()); break; case XMLStreamConstants.END_ELEMENT: out.println("End Element:" + r.getName()); break; case XMLStreamConstants.END_DOCUMENT: out.println("End Document."); break; }  if (!r.hasNext()) break; event = r.next(); }} finally { r.close();}