XML解析:SAX与DOM方法全解析
1. 使用SAX解析XML
在大多数情况下,从XML文档中提取信息的最佳方式是使用符合SAX(Simple API for XML)标准的事件驱动解析器来解析文档。SAX定义了一个标准API,可以在许多不同的底层解析器之上实现。SAX解析方法与大多数HTML解析器有相似之处。当解析器在输入流中遇到XML元素、文本内容和其他重要事件时,它会回调你所定义类中的方法。这种基于相关事件发生时回调方法的事件驱动解析方式,也与图形用户界面(GUIs)以及一些优秀的、可扩展的网络框架(如Twisted)中普遍使用的事件驱动方法类似。虽然事件驱动方法对于初学者来说可能不太自然,但它能实现高性能和高可扩展性,非常适合高负载的场景。
要使用SAX,你需要定义一个内容处理类,继承一个库类并覆盖一些方法。然后创建一个解析器对象p,将你定义类的实例设置为p的处理程序,并将输入流提供给p进行解析。p会调用处理程序中的方法来反映文档的结构和内容,处理程序的方法则执行特定于应用程序的处理。xml.sax包提供了一个工厂函数来创建p,以及一些在典型情况下简化操作的便利函数,同时还提供了异常类,用于处理无效输入和其他错误情况。
你还可以为解析器p注册除内容处理程序之外的其他类型的处理程序。例如,你可以提供一个自定义的错误处理程序,采用不同于正常抛出异常的错误诊断策略,以便在解析过程中诊断多个错误;可以提供一个自定义的DTD处理程序,从XML文档