本教程是为JDK 8编写的。本页中描述的示例和实践不利用后续版本中引入的改进,并且可能使用不再可用的技术。
请参阅Java语言变更,了解Java SE 9及后续版本中更新的语言特性的摘要。
请参阅JDK发布说明,了解有关所有JDK版本的新功能、增强功能以及已删除或不推荐使用选项的信息。
本课程介绍了XML简单API(SAX),一种基于事件驱动的串行访问机制,用于访问XML文档。此协议经常被需要传输和接收XML文档的servlet和面向网络的程序使用,因为它是当前可用的处理XML文档的最快且最节省内存的机制,除了XML流API(StAX)。
注意 - 简而言之,SAX面向无状态独立处理,处理元素不依赖于之前的元素。另一方面,StAX面向有状态依赖处理。有关更详细的比较,请参见何时使用SAX。
设置程序以使用SAX比使用文档对象模型(DOM)需要更多的工作。SAX是一种事件驱动的模型(您提供回调方法,解析器在读取XML数据时调用它们),这使得它更难以可视化。最后,您不能“备份”到文档的早期部分,也不能重新排列它,就像您不能备份串行数据流或重新排列从该流读取的字符一样。
出于这些原因,编写一个用户导向的应用程序来显示XML文档并可能修改它的开发人员将希望使用在文档对象模型中描述的DOM机制。
然而,即使您计划仅构建DOM应用程序,熟悉SAX模型也有几个重要原因:
相同的错误处理:SAX和DOM API生成相同类型的异常,因此错误处理代码几乎相同。
处理验证错误:默认情况下,规范要求忽略验证错误。如果您想在验证错误发生时抛出异常(很可能是这样),那么您需要了解SAX错误处理的工作原理。
转换现有数据:如文档对象模型中所述,您可以使用一种机制将现有数据集转换为XML。但是,利用该机制需要了解SAX模型。