论文部分内容阅读
XML(eXtensible Markup Language)是W3C定义的一种标记语言,利用XML可以在一个可编辑的正文文件中描述结构化/半结构化的数据。目前,XML被广泛应用于Web环境下的数据传输与交换、数据集成、文档存储等应用中。XML解析的SAX(Simple API for XML)接口由一个名为XML—DEV的讨论组提出,在解析XML文档的时候可以触发一系列的事件供用户处理。虽然该API没有成为官方推荐的标准,但因为它的性能优势和简单易用,实际上已被开发者和最终用户广为使用。 本文根据SAX接口的特点,设计和实现了一个高性能的SAX解析器OnceSAXParser。Once SAXParser具有完备的XML解析功能,灵活的可配置可扩展结构。另外在设计中,我们采用了简单实用的数据结构设计,从词法分析器的有限自动机优化、缓冲管理以及SAX语法分析器状态化简等多个方面着手提高性能,并尝试了采用对象池管理对象的创建、销毁以减少JVM(Java VirtualMachine)中小对象的数量。另外,对语言层面的优化也做了一些有益的探讨。 为了确保Once SAXParser具有XML和SAX API兼容性,本文对OnceSAXParser进行了严格的兼容性测试。测试程序扩展了JUnit自动化测试框架,针对两千多个XML测试文档能自动地测试Once SAXParser的处理是否符合XML规范。Once SAXParser成功通过了XML和SAX API兼容性测试,优于大多数同类产品。 本文最后使用Sun公司的XML性能测试工具XML Test测试了OnceSAXParser和目前广泛使用的Xerces解析器,测试结果表明前者的性能比后者平均高出30%左右,这说明在保证功能完整的情况下,Once SAXParser具有高效的解析性能。