关闭

Sax解析详解

标签: Sax解析
103人阅读 评论(0) 收藏 举报
分类:
1.SAX:解析Simple API for XML
     SAX 是一个 event-driven serial-access 类 型的 XML 处理机制。
    event-driven : SAX 提供 面向 elements, text 和 comments 等 不同 事件的处理 方法,当解析器 读  取 XML 数据 时 就会 调 用 这 些方法。
    serial-access : SAX 工作起来有点像一个 连续 的 I/O 流,能 实时 的 传 送和接收数据,它不会去构造 XML 的 树 形 结 构,所以只需要很少的内存。
    当然 这 在另一方面 , 也 导 致了你不能退回到早前 读 取的一个 element 或者跳到后面 还 未 读 到的 element 。
  2. When To Use SAX
    因 为 SAX 是 处 理 XML 文件的最快的,内存需求最小的 解析器 ,所以当你只需要 简单 地 读取 数据, 好 让 你的程序运行 这 些数据的 时候 ,SAX 是很好的 选择 。
    因此, SAX 常被用于 servlet 和面向 网络 编程的存取 XML 文件。

  3.自定义 SAX 解析器
        以下是自定义一个SAX解析器的详细方法:
    1.继承DefaultHandler
        因为DefaultHandler同时实现了EntityResolver,DTDHandler,ContentHandler和ErrorHandler四个接口,
           这样你就可以在你的XML解析器中调用或重写这四个接口中定义的面向不同事件的处理方法。
    2.创建简单的parser(Validating parser)
         创建一个parser,并使用Schema或DTD对XML文件进行校验
    3.ContentHandler
          1)处理Document 事件的method
         - startDocument:  开始解析XML文件,此方法只会被调用一次
             - endDocument:  解析XML文件结束
          2)处理Element 事件的method
            - startElement:  开始解析XML文件的一个元素,在此方法中,可以获得该元素的属性和其对应的value值
            - endElement:  解析该元素完毕
          3)处理Character 事件的method
             - characters:  用于解析元素中的字符数据
          4)其他method
            - setDocumentLocator:  该方法只在解析开始前被调用一次。用户可获得当前所解析的XML文件的位置和public identifier等信息。
                - ignorableWhitespace:  使用DTD校验时,通过重写此方法,用户可以查看XML中哪些地方存在whitespace
                - processingInstruction:  通过此方法可以获得XML中定义的命令(target)和命令所处理的内容(data)

  4.ErrorHandler
        解析XML时发生的异常包括三种:a fatal error, an error, and a warning.
              -fatalError(SAXParseException):  用于处理致命error
            -error(SAXParseException):  用于处理非致命error,发生于对XML进行校验时。默认是被忽略的。由于当一个XML发生校验错误时,用户可能不希望再解析下去了,
          此时,可以将此类异常自定义为致命error抛出。
              -warning(SAXParseException):  用于处理警告。默认是被忽略的。用户可以通过自定义的方式打印出异常具体的发生地点和信息。
  5.DTDHandler
       事件处理method
             -notationDecl:  Receive notification of a notation declaration event.
            -unparsedEntityDecl:  Receive notification of an unparsed entity declaration event.
  6.EntityResolver
      事件处理method
              -resolveEntity:  该方法用于将public ID (URN)装换为system ID (URL),返回一个InputSource object。
  7.LexicalHandler
              SAX中使用org.xml.sax.ext.LexicalHandler来处理comments, CDATA sections和references。]
  8.方法参数代表类型
    startElement(String namespaceURI,String localName,String fullName,Attributes attributes){     }

        namespaceURI——命名空间

         localName——标签名称

        fullName——带命名空间的标签名

        Attributes——存放该标签的所有属性



        characters(char[ ] ch,int start ,int length)

        ch——当前读到的TextNode字节数组

        start——字节开始的位置,如果要读取全部,那就是从0开始

        length——当前TextNode的长度

附sax解析jar包:

0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

简单SAX解析详解全过程

SAX解析: Java JDK自带的解析(SAXParserFactory SAXPaeser DefaultHandler) 特点:一行一行的往下面执行解析的 startDocment starte...
  • lsh364797468
  • lsh364797468
  • 2016-05-05 19:13
  • 1949

XML-解析技术(dom解析,sax解析)

XML解析方式分为两种:dom和sax    dom:(Document Object Model, 即文档对象模型) 是 W3C 组织推荐的处理 XML 的一种方式。    sax: (Simpl...
  • WillCold
  • WillCold
  • 2013-10-25 08:50
  • 1105

利用Dom,Sax,Pull三种方式解析xml文件

最近找工作,看到许多公司的要求里都写了要会xml解析,所以就把之前的xml解析知识又重新回顾了一下,写个小例子. 解析xml文件常用的几种方式也就dom,sax,pull了,并且面试官经常问到的也是这...
  • qiang_xi
  • qiang_xi
  • 2015-11-29 20:15
  • 1145

XML第十六讲:SAX方式解析XML文档深入详解

前面我讲到了两种解析XML的方法,一种是DOM解析,另外一种是SAX解析,DOM解析我们已经剖析过了,现在我们来讲一下SAX解析 1. SAX(Simple APIs for XML),...
  • xukunhui2
  • xukunhui2
  • 2013-03-29 11:54
  • 1255

详解Java解析XML的四种方法—DOM/SAX/jdom/dom4j

最近在研究XML文件的生成和解析,网上资料很多,当然也参差不齐。写的没错误的通常是单独介绍了1种方法,介绍全的常常运行不起来。         小哆把4种方法汇总了一下,运行验证成功。     ...
  • sdsky1987
  • sdsky1987
  • 2012-02-23 11:47
  • 6519

详解android解析Xml的三种方式——DOM、SAX以及XMLpull

今天学习了android解析Xml的三种方式——DOM、SAX以及XMLpull,这里对它们进行总结。 如果理解有误,欢迎指正   ^_* 一、DOM方式解析: xml是先把xml文...
  • badboy1110
  • badboy1110
  • 2011-09-23 16:32
  • 3455

JavaWeb 之 XML文档的DOM和SAX解析方式详解

笔记摘要:       这里主要介绍了DOM与SAX两种解析思想,其中DOM解析的开发包有Ajax和DOM4j,对于DOM4j,其强大的功能,在XPath方面尤为抢眼,       XPath类似于正...
  • xushuaic
  • xushuaic
  • 2012-08-31 18:30
  • 1952

XML解析(SAX详解)

SAX(Simple APIs for XML 面向XML的简单APIs)也是程序接口。 Dom可以随机解析,首先将XMl文档加载到内存中,然后可以随机的方式访问访问内存中的DOM树。SAX是按顺序...
  • zhaoming262350
  • zhaoming262350
  • 2013-03-24 21:33
  • 546

详解android解析Xml的三种方式——DOM、SAX以及XMLpull

今天学习了android解析Xml的三种方式——DOM、SAX以及XMLpull,这里对它们进行总结。如果理解有误,欢迎指正 ^_*一、DOM方式解析:xml是先把xml文档都读到内存中,然后再用DO...
  • MaximusKiang
  • MaximusKiang
  • 2014-08-04 13:33
  • 676

详解Java解析XML的四种方法—DOM/SAX/jdom/dom4j

最近在研究XML文件的生成和解析,网上资料很多,当然也参差不齐。写的没错误的通常是单独介绍了1种方法,介绍全的常常运行不起来。 小哆把4种方法汇总了一下,运行验证成功。点击此处,jar包免费下载XML...
  • a516972602
  • a516972602
  • 2015-09-15 11:35
  • 412
    个人资料
    • 访问:5547次
    • 积分:231
    • 等级:
    • 排名:千里之外
    • 原创:18篇
    • 转载:1篇
    • 译文:0篇
    • 评论:0条
    文章分类