一.   Java Sax解析是按照xml文件的顺序一步一步的来解析,在解析xml文件之前,我们要先了解xml文件的节点的种类,一种是ElementNode,一种是TextNode。如下面的这段book.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <bookStore>
  3. <book id="1">
  4. <name>thinking in java</name>
  5. <price>88</price>
  6. <author>Bruce Eckel</author>
  7. </book>
  8.  
  9. <book id="2">
  10. <name>java编程思想</name>
  11. <price>98</price>
  12. <author>陈昊鹏 译</author>
  13. </book>
  14. </bookStore>
  1. <bookStore>是ElementNode,thinking in java 内容属于TextNode。
  2.  
  3. 首先Sax解析器加载xml文件,sax解析是按照读取文件的顺序进行解析,当读入文件时,会调用startDocument()方法。读入<bookStore>时候,因为它是一个Element节点,调用startElement(String uri, String localName, String qName, Attributes attributes)方法,然后读入<bookStore><book>节点之间的内容,会调用characters(char[] ch, int start, int length),这个会解析成"\n\t",然后解析<book>节点,调用endElement(String uri,String localName,String qName)其中qName是节点的名称。然后解析book节点的内容,调用characters方法接着调用endElement()方法,一直到文档结束。
  1. import java.io.File;
  2. import javax.xml.parsers.SAXParser;
  3. import javax.xml.parsers.SAXParserFactory;
  4. import org.xml.sax.Attributes;
  5. import org.xml.sax.SAXException;
  6. import org.xml.sax.helpers.DefaultHandler;
  7.  
  8. public class SaxParseTest
  9. {
  10. public static void main(String[] args) throws Exception
  11. {
  12. saxParseXml("src/book.xml");
  13. }
  14.  
  15. static void saxParseXml(String fileName) throws Exception{
  16. SAXParserFactory factory = SAXParserFactory.newInstance();
  17. SAXParser saxParser = factory.newSAXParser();
  18. saxParser.parse(new File(fileName), new mySaxHanlder());
  19. }
  20.  
  21. }
  22.  
  23. class mySaxHanlder extends DefaultHandler{
  24. @Override
  25. public void startElement(String uri,String localName,String qName, Attributes attributes) throws SAXException
  26. {
  27. System.out.print("<"+qName+">");
  28. }
  29.  
  30. @Override
  31. public void endElement(String uri,String localName,String qName) throws SAXException
  32. {
  33. System.out.print("</"+qName+">");
  34. }
  35.  
  36. @Override
  37. public void characters(char[] ch, int start, int length) throws SAXException
  38. {
  39. System.out.print(new String(ch,start,length));
  40. }
  41. }

代码只是将加载的xml文件内容输出到控制台。注意:不要将节点之间的空白忘记,它会将空白当成文本节点(TextNode)进行解析.

Java Sax解析的更多相关文章

  1. Java SAX解析器

    SAX(针对XML的简单API)是基于事件为XML文档的解析器.不像DOM解析器,SAX解析器创建没有解析树. SAX是一个流接口用于XML的,这意味着使用SAX应用接收事件通知有关XML文档被处理的 ...

  2. java解析XML之DOM解析和SAX解析(包含CDATA的问题)

    Dom解析功能强大,可增删改查,操作时会将XML文档读到内存,因此适用于小文档: SAX解析是从头到尾逐行逐个元素解析,修改较为不便,但适用于只读的大文档:SAX采用事件驱动的方式解析XML.如同在电 ...

  3. SAX解析与DOM解析

    SAX解析实例:http://www.iteye.com/topic/763895 Java Sax解析是按照xml文件的顺序一步一步的来解析,在解析xml文件之前,我们要先了解xml文件的节点的种类 ...

  4. JAVA使用SAX解析XML文件

    在我的另一篇文章(http://www.cnblogs.com/anivia/p/5849712.html)中,通过一个例子介绍了使用DOM来解析XML文件,那么本篇文章通过相同的XML文件介绍如何使 ...

  5. Java sax、dom、pull解析xml

    -------------------------------------SAX解析xml---------------------------------- >Sax定义 SAX是一个解析速度 ...

  6. 用SAX解析xml文件,java

    (此文为(https://www.imooc.com/video/4482)之随笔) 1.用SAX解析xml文件大致分为三步 写了一个XML文件作为例子 (1)main方法代码如下: import j ...

  7. XML概念定义以及如何定义xml文件编写约束条件java解析xml DTD XML Schema JAXP java xml解析 dom4j 解析 xpath dom sax

    本文主要涉及:xml概念描述,xml的约束文件,dtd,xsd文件的定义使用,如何在xml中引用xsd文件,如何使用java解析xml,解析xml方式dom sax,dom4j解析xml文件 XML来 ...

  8. Java SE之XML<二>XML DOM与SAX解析

    [文档整理系列] Java SE之XML<二>XML DOM与SAX解析 XML编程:CRUD(Create Read Update Delete) XML解析的两种常见方式: DOM(D ...

  9. Java数据解析---SAX

    一.Sax解析 是从头到尾逐行逐个元素读取内容,修改较为不便,但适用于只读的大文档. Sax采用事件驱动的方式解析文档.简单点说,如同在电影院看电影一样,从头到尾看一遍就完了,不能回退(Dom可来来回 ...

随机推荐

  1. Writing a simple Lexer in PHP/C++/Java

    catalog . Comparison of parser generators . Writing a simple lexer in PHP . phc . JLexPHP: A PHP Lex ...

  2. Java中使用JDBC

    JDBC简介 JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言 ...

  3. bash的配置

    Bash的启动文件 启动文件也是一种脚本,不过它是在Bash在启动之初就执行它的.不同的启动方式使用的启动文件也有不同. 1. 作为交互的登录脚本环境“交互的”是指你可以再这个环境下输入命令.而所谓的 ...

  4. springMVC 基于注解的controller

    概述 继 Spring 2.0 对 Spring MVC 进行重大升级后,Spring 2.5 又为 Spring MVC 引入了注解驱动功能.现在你无须让 Controller 继承任何接口,无需在 ...

  5. css编写规范

    一.注释规范 1.文件顶部注释(推荐使用) /* * @description: 中文说明 * @author: name * @update: name (2013-04-13 18:32) */ ...

  6. aircrack-ng 多网卡启动后环境清理

    #!/bin/sh pkill airodump airmon-ng stop wlan0mon service network-manager restart rm -rf sadsad*

  7. 11 Clever Methods of Overfitting and how to avoid them

    11 Clever Methods of Overfitting and how to avoid them Overfitting is the bane of Data Science in th ...

  8. 重载new操作符

    http://book.51cto.com/art/201202/317799.htm

  9. Mac OS下配置Eclipse C++的方法

    http://nonlz.blog.163.com/blog/static/128872032201262622921622/

  10. Robot Framework--13 RFS+AutoItLibrary测试web上传下载

    转自:http://blog.csdn.net/tulituqi/article/details/21888059 Selenium2library在我们实际测试web页面的时候基本上已经够用了,不过 ...