清单 2. 使用 JAXP SAXParser //获得SAXP的一个实例 SAXParser saxParser = saxFactory.newSAXParser(); //查看是否支持 Validate 选项 boolean isValidating = saxParser.isValidating(); //查看是否支持 namespace 选项 boolean isNamespaceAware = saxParser.isNamespaceAware(); // 运用一个File 和一个SAX HandlerBase 的实例进行多种形式的语法分析 saxParser.parse(new File(args[0]), myHandlerBaseInstance); // 运用一个 SAX InputSource实例 和一个 SAX HandlerBase 实例 saxParser.parse(mySaxInputSource, myHandlerBaseInstance); //运用一个 InputStream 实例和一个SAX HandlerBase 实例 saxParser.parse(myInputStream, myHandlerBaseInstance); // 运用一个 URI 和一个SAX HandlerBase 实例 saxParser.parse("http://www.newInstance.com/xml/doc.xml", myHandlerBaseInstance); //获得底层的(封装)SAX 语法分析器 org.xml.sax.Parser parser = saxParser.getParser(); //利用底层的语法分析器 parser.setContentHandler(myContentHandlerInstance); parser.setErrorHandler(myErrorHandlerInstance); parser.parse(new org.xml.sax.InputSource(args[0]));
|
目前为止,关于 SAX 已经讲了很多,但是还没有揭示任何不寻常或令人惊奇的东西。事实上,JAXP 的功能很少,特别是当 SAX 也牵涉进来时。这很好,因为有最少的功能性意味着代码可移植性更强,并可以由其他开发人员与任何与 SAX 兼容的 XML 语法分析器一起使用,无论是免费(通过开放源码,希望如此)还是通过商业途径。就是这样。在 JAXP 中使用 SAX 没有更多的东西。如果已经知道 SAX,那么现在已经掌握大约 98% 的内容。只需学习两个新类和两个 Java 异常,您就可以开始了。如果从没使用过 SAX,那也很简单,现在就可以开始。