SAX处理XML

    技术2022-06-23  39

     

    1.SAX(Simple Access for XML)API:基于事件驱动的XML处理模型,是一种推模式解析(push-parsing) XML文档的API

    解析程序按读入xml文档事件的顺序解析数据,同时基于所选择的结构调用回调处理函数。

    2.SAX处理模型的工作步骤:

    (1).实现一个扩展DefaultHandler的类,并为每种类型的结构定义回调方法。

    (2).初始化一个新的SAX Parser类,Parser读取XML源文件,并触发DefaultHandler类中所定义的回调方法。

    (3).顺序读取XML源文件。

    3.SAX处理XML文件过程详解:

    (1).创建实现DefaultHandlerXML处理器:

    //当分析器到达XML文档末端时调用 public void endDocument(){ …… } //对包含元素的字符数据调用 public void characters(char bur[], int offset, int len){ …… } //每次遇到一个新的开始标记或者元素时调用 public void startElement(String nameSpaceURI, String localName, String realName, Attributes attrs){ …… } //当元素结束时调用 public void endElement(String nameSpaceURI, String localName, String rawName){ …… } } 

    (2).获取SAX FactoryParser

    a.创建已实现的Handler类实例:

    DefaultHandler handler = new MyImplHandler(); 

    b.获取SAXFactory实例:

    SAXParserFactory factory = SAXParserFactory.newInstance(); 

    c.通过SAXFactory创建SAX Parser

    SAXParser parser = factory.newSAXParser(); 

    d.分析XML文件:

    parser.parser(XML文件url, handler); 

    4.SAX处理XML的优点:

    SAX最大的优点是不把任何的XML文档一次性装入内存中,而是依次逐步读入,因此相比DOM的解析方式更加快速和轻便。

    具体如下:

    (1).没有将整个文档读入内存,内存耗费较低,尤其对于大型的文件这是一个非常巨大的优点。

    (2). 使用“ 推模式 ”(由文档读入事件来取代处理程序),允许注册多种内容处理器。

    5.SAX处理XML的局限和适应场景:

    (1).没有内建的文档导航支持

    (2).不能随机访问 XML 文档

    (3).不支持命名空间

    SAX处理XML方式适用于:对 XML 只有读操作的程序(不要用来操作和修改XML 文档)。

     

     


    最新回复(0)