XML解析之sax解析案例(一)读取contact.xml文件,完整输出文档内容

原创 2016年05月31日 13:16:25

一、新建Demo2类:

import java.io.File;

import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;

/**
 * 读取contact.xml文件,完整输出文档内容
 * @author APPle
 *
 */
public class Demo2 {

	public static void main(String[] args)throws Exception {
		//1.创建SAXParser
		SAXParser parser = SAXParserFactory.newInstance().newSAXParser();
		//2.读取xml文件
		MyDefaultHandler2 handler = new MyDefaultHandler2();
		parser.parse(new File("./src/contact.xml"), handler);
		String content = handler.getContent();
		System.out.println(content);
	}

}

二、建立自定义MyDefaulthander2

import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;
/**
 * SAX处理器程序
 * @author APPle
 */
public class MyDefaultHandler2 extends DefaultHandler {
	//存储xml文档信息
	private StringBuffer sb = new StringBuffer();
	
	//获取xml信息
	public String getContent(){
		return sb.toString();
	}
	

	/**
	 * 开始标签
	 */
	@Override
	public void startElement(String uri, String localName, String qName,
			Attributes attributes) throws SAXException {
		sb.append("<"+qName);
		//判断是否有属性
		if(attributes!=null){
			for(int i=0;i<attributes.getLength();i++){//int getLength() 返回此列表中的属性个数。 
				//得到属性名称   id="001"
				String attrName = attributes.getQName(i);//String getQName(int index) 通过索引查找属性的 XML 限定(前缀)名。 
				//得到属性值
				String attrValue = attributes.getValue(i);//String getValue(int index) 通过索引查找属性的值。 
				sb.append(" "+attrName+"=\""+attrValue+"\"");
			}
		}
		sb.append(">");
	}
	
	/**
	 * 文本内容
	 */
	@Override
	public void characters(char[] ch, int start, int length)
			throws SAXException {
		//得到当前读取的文本
		String content = new String(ch,start,length);
		sb.append(content);
	}
	
	/**
	 * 结束标签
	 */
	@Override
	public void endElement(String uri, String localName, String qName)
			throws SAXException {
		sb.append("</"+qName+">");
	}
}
打印输出结果:

<contactList>
    <contact id="001" name="eric">
        <name>张三</name>
        <age>20</age>
        <phone>134222223333</phone>
        <email>zhangsan@qq.com</email>
        <qq>432221111</qq>
    </contact>
    <contact id="002" name="jacky">
        <name>eric</name>
        <age>20</age>
        <phone>134222225555</phone>
        <email>lisi@qq.com</email>
        <qq>432222222</qq>
    </contact>
</contactList>

版权声明:本文为博主原创文章,未经博主允许不得转载。

java中使用SAX读取和写出XML文件

SAX是一种事件驱动的流式XML文件处理方式,区别与DOM方式的是不需要在内存中建一棵DOM树,而是根据读取XML时遇到的标签事件来顺序处理,因此具有速度快,内存占用上的优点。SAX往往是大容量XML...
  • chjttony
  • chjttony
  • 2012年05月28日 20:21
  • 12231

使用SAX解析XML文件

SAX是Simple API for XML的缩写,它并不是由W3C官方所提出的标准,虽然如此,使用SAX的还是不少,几乎所有的XML解析器都会支持它。      与DOM比较而言,SAX是一种轻量...
  • wangkuifeng0118
  • wangkuifeng0118
  • 2012年02月29日 10:55
  • 29506

sax

SAX是一个用于处理XML事件驱动的“推”模型,虽然它不是W3C标准,但它却是一个得到了广泛认可的API。SAX解析器不像DOM那样建立一个完整的文档树,而是在读取文档时激活一系列事件,这些事件被推给...
  • Jye13
  • Jye13
  • 2013年03月07日 19:03
  • 658

SAX 的一些乐趣

Chris Lovett 2000年8月21日 查看和下载本文的源代码现在我知道引起大量读者评论的秘密了。只需写一篇有关读者还不能接触到的最新技术的文章就够了。现在既然提供了 .NET Framew...
  • ghj1976
  • ghj1976
  • 2000年12月09日 02:44
  • 1477

Java解析xml文档之SAX解析

sax解析是一种边读边解析,仅向前读取,不能修改,用来读。sax创建XMLReader三步:SAXParserFactory factory = SAXParserFactory.newInstanc...
  • new___Smile
  • new___Smile
  • 2016年07月16日 00:59
  • 3522

使用SAX解析将xml的文件内容结构保存到java对象中

在Java使用Sax解析xml文件中,我们介绍了如何用SAX解析xml文件,接下来我们继续学习如何将一个xml文件的内容结构保存到一个java实例对象中 一、xml文件如下 计...
  • kingsonyoung
  • kingsonyoung
  • 2016年07月22日 15:17
  • 1437

DOM与SAX的简单对比

SAX (Simple API for XML) 和 DOM (Document Object Model) 是当前两个主要的XML API,几乎所有商用的xml 解析器都同时实现了这两个接口。因此如...
  • liuchink
  • liuchink
  • 2012年10月30日 22:10
  • 133

SAX入门

wukejia@msn.com本文为打算在程序中使用SAX2技术的Java程序员提供一个快速指南。1 必备条件SAX是一个针对多种不同XML解析器(以及具备XML解析器行为的东西)实现的通用接口。就像...
  • kestrel
  • kestrel
  • 2006年01月24日 14:05
  • 2148

QT开发(四十三)——SAX方式解析XML

QT开发(四十三)——SAX方式解析XML一、SAX简介SAX是Simple API for XML的简写,是一种解析XML文件的替代方法,不是由W3C官方所提出的标准,是一种事件驱动的XML API...
  • A642960662
  • A642960662
  • 2017年03月26日 12:47
  • 267

java环境下读取xml文件的方法主要有4种:DOM、SAX、JDOM、JAXB

在java环境下读取xml文件的方法主要有4种:DOM、SAX、JDOM、JAXB 1.  DOM(Document Object Model)   此 方法主要由W3C提供,它将xml文件全...
  • songjinbin
  • songjinbin
  • 2013年11月26日 14:41
  • 2993
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:XML解析之sax解析案例(一)读取contact.xml文件,完整输出文档内容
举报原因:
原因补充:

(最多只允许输入30个字)