Java Sax解析
一. Java Sax解析是按照xml文件的顺序一步一步的来解析,在解析xml文件之前,我们要先了解xml文件的节点的种类,一种是ElementNode,一种是TextNode。如下面的这段book.xml
- <?xml version="1.0" encoding="UTF-8"?>
- <bookStore>
- <book id="1">
- <name>thinking in java</name>
- <price>88</price>
- <author>Bruce Eckel</author>
- </book>
- <book id="2">
- <name>java编程思想</name>
- <price>98</price>
- <author>陈昊鹏 译</author>
- </book>
- </bookStore>
- <bookStore>是ElementNode,thinking in java 内容属于TextNode。
- 首先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()方法,一直到文档结束。
- import java.io.File;
- import javax.xml.parsers.SAXParser;
- import javax.xml.parsers.SAXParserFactory;
- import org.xml.sax.Attributes;
- import org.xml.sax.SAXException;
- import org.xml.sax.helpers.DefaultHandler;
- public class SaxParseTest
- {
- public static void main(String[] args) throws Exception
- {
- saxParseXml("src/book.xml");
- }
- static void saxParseXml(String fileName) throws Exception{
- SAXParserFactory factory = SAXParserFactory.newInstance();
- SAXParser saxParser = factory.newSAXParser();
- saxParser.parse(new File(fileName), new mySaxHanlder());
- }
- }
- class mySaxHanlder extends DefaultHandler{
- @Override
- public void startElement(String uri,String localName,String qName, Attributes attributes) throws SAXException
- {
- System.out.print("<"+qName+">");
- }
- @Override
- public void endElement(String uri,String localName,String qName) throws SAXException
- {
- System.out.print("</"+qName+">");
- }
- @Override
- public void characters(char[] ch, int start, int length) throws SAXException
- {
- System.out.print(new String(ch,start,length));
- }
- }
代码只是将加载的xml文件内容输出到控制台。注意:不要将节点之间的空白忘记,它会将空白当成文本节点(TextNode)进行解析.
Java Sax解析的更多相关文章
- Java SAX解析器
SAX(针对XML的简单API)是基于事件为XML文档的解析器.不像DOM解析器,SAX解析器创建没有解析树. SAX是一个流接口用于XML的,这意味着使用SAX应用接收事件通知有关XML文档被处理的 ...
- java解析XML之DOM解析和SAX解析(包含CDATA的问题)
Dom解析功能强大,可增删改查,操作时会将XML文档读到内存,因此适用于小文档: SAX解析是从头到尾逐行逐个元素解析,修改较为不便,但适用于只读的大文档:SAX采用事件驱动的方式解析XML.如同在电 ...
- SAX解析与DOM解析
SAX解析实例:http://www.iteye.com/topic/763895 Java Sax解析是按照xml文件的顺序一步一步的来解析,在解析xml文件之前,我们要先了解xml文件的节点的种类 ...
- JAVA使用SAX解析XML文件
在我的另一篇文章(http://www.cnblogs.com/anivia/p/5849712.html)中,通过一个例子介绍了使用DOM来解析XML文件,那么本篇文章通过相同的XML文件介绍如何使 ...
- Java sax、dom、pull解析xml
-------------------------------------SAX解析xml---------------------------------- >Sax定义 SAX是一个解析速度 ...
- 用SAX解析xml文件,java
(此文为(https://www.imooc.com/video/4482)之随笔) 1.用SAX解析xml文件大致分为三步 写了一个XML文件作为例子 (1)main方法代码如下: import j ...
- 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来 ...
- Java SE之XML<二>XML DOM与SAX解析
[文档整理系列] Java SE之XML<二>XML DOM与SAX解析 XML编程:CRUD(Create Read Update Delete) XML解析的两种常见方式: DOM(D ...
- Java数据解析---SAX
一.Sax解析 是从头到尾逐行逐个元素读取内容,修改较为不便,但适用于只读的大文档. Sax采用事件驱动的方式解析文档.简单点说,如同在电影院看电影一样,从头到尾看一遍就完了,不能回退(Dom可来来回 ...
随机推荐
- Writing a simple Lexer in PHP/C++/Java
catalog . Comparison of parser generators . Writing a simple lexer in PHP . phc . JLexPHP: A PHP Lex ...
- Java中使用JDBC
JDBC简介 JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言 ...
- bash的配置
Bash的启动文件 启动文件也是一种脚本,不过它是在Bash在启动之初就执行它的.不同的启动方式使用的启动文件也有不同. 1. 作为交互的登录脚本环境“交互的”是指你可以再这个环境下输入命令.而所谓的 ...
- springMVC 基于注解的controller
概述 继 Spring 2.0 对 Spring MVC 进行重大升级后,Spring 2.5 又为 Spring MVC 引入了注解驱动功能.现在你无须让 Controller 继承任何接口,无需在 ...
- css编写规范
一.注释规范 1.文件顶部注释(推荐使用) /* * @description: 中文说明 * @author: name * @update: name (2013-04-13 18:32) */ ...
- aircrack-ng 多网卡启动后环境清理
#!/bin/sh pkill airodump airmon-ng stop wlan0mon service network-manager restart rm -rf sadsad*
- 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 ...
- 重载new操作符
http://book.51cto.com/art/201202/317799.htm
- Mac OS下配置Eclipse C++的方法
http://nonlz.blog.163.com/blog/static/128872032201262622921622/
- Robot Framework--13 RFS+AutoItLibrary测试web上传下载
转自:http://blog.csdn.net/tulituqi/article/details/21888059 Selenium2library在我们实际测试web页面的时候基本上已经够用了,不过 ...