`
John_Kong19
  • 浏览: 279777 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Read XML By SAX

阅读更多
package com.test.xml;

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 ReadXMLBySAX extends DefaultHandler {

	private String tagValue;
	long starttime;
	long endtime;

	public static void main(String[] args) {
		String filename = "E:\\Computer.xml";
		SAXParserFactory spf = SAXParserFactory.newInstance();
		try {
			SAXParser saxParser = spf.newSAXParser();
			saxParser.parse(new File(filename), new ReadXMLBySAX());
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	// 开始解析XML文件
	public void startDocument() throws SAXException {
		// 可以在此初始化变量等操作
		System.out.println("~~~~解析文档开始~~~");
		// starttime=System.currentTimeMillis();
		starttime = System.nanoTime();
	}

	// 结束解析XML文件
	public void endDocument() throws SAXException {
		// endtime=System.currentTimeMillis();
		endtime = System.nanoTime();
		System.out.println("~~~~解析文档结束~~~");
		// System.out.println("共用"+(endtime-starttime)+"毫秒");
		System.out.println("共用" + (endtime - starttime) + "纳秒");
	}

	/**
	 * 在解释到一个开始元素时会调用此方法.但是当元素有重复时可以自己写算法来区分
	 * 
	 */
	public void startElement(String uri, String localName, String qName,
			Attributes attributes) throws SAXException {
		System.out.println("startElement处标签名:" + qName);
		if (attributes != null && attributes.getLength() != 0) {
			System.out.print("--" + "该标签有属性值:");
			for (int i = 0; i < attributes.getLength(); i++) {
				System.out.print(attributes.getQName(i) + "=");
				System.out.print(attributes.getValue(i) + " ");
			}
			System.out.println();
		}

	}

	/**
	 * 在遇到结束标签时调用此方法
	 */
	public void endElement(String uri, String localName, String qName)
			throws SAXException {
		System.out.print("endElement处的值是:");
		System.out.println(tagValue);
	}

	/**
	 * 所有的XML文件中的字符会放到ch[]中
	 */
	public void characters(char ch[], int start, int length)
			throws SAXException {
		tagValue = new String(ch, start, length).trim();
	}

}
分享到:
评论

相关推荐

    Dom4j的用法

    Dom4j是Java平台中一个功能强大的开源XML解析库,它支持DOM、SAX和JAXP标准。由于其易于使用的接口和Java集合框架的集成,Dom4j广泛应用于需要处理XML文档的Java应用程序中。首先,Dom4j的应用非常简单,只需要对XML...

    Beginning PHP 5.3

    - **DOM and SAX:** Overview of DOM (Document Object Model) and SAX (Simple API for XML) parsing techniques. - **Creating XML Documents:** Techniques for creating XML documents dynamically in PHP. - **...

    jdk-9.0.1_doc-all 最新版

    Defines the Java API for XML Processing (JAXP), the Streaming API for XML (StAX), the Simple API for XML (SAX), and the W3C Document Object Model (DOM) API. java.xml.bind Defines the Java ...

    PHP Web 2.0 Mashup Projects.pdf

    object-oriented abstraction of these formats, which can be consumed by our mashup application. In Chapter 5, we screen-scrape from the California Highway Patrol website. The CHP maintains a website...

    2016面试汇总.doc

    主要有DOM(Document Object Model)、SAX(Simple API for XML,事件驱动)、DOM4J(Java API for XML Processing)、JDOM等。DOM一次性加载整个XML文档,适合小文档;SAX逐行读取,节省内存,适合大文档。 6. **...

    java笔试题.docx

    7. XML解析方式:主要有DOM(文档对象模型)和SAX(简单API for XML)。DOM一次性加载整个XML文档,适合小规模数据;SAX事件驱动,逐行解析,适合大规模数据。XML的主要作用是数据交换、配置存储。优点包括结构化、...

    python3.6.5参考手册 chm

    xml.sax zipfile Other module-level changes Optimizations Build and C API Changes Deprecated New Keywords Deprecated Python Behavior Unsupported Operating Systems Deprecated Python modules, ...

    linux全志R16的linux系统编译的资料_20170502_1655.7z

    libwww-robotrules-perl libxml-libxml-perl libxml-namespacesupport-perl libxml-parser-perl libxml-sax-base-perl libxml-sax-expat-perl libxml-sax-perl texinfo 升级了 0 个软件包,新安装了 28 个软件包,...

    java面试题

    SAX:事件驱动型的xml解析方法,适合对xml的顺序访问 jsp常用动作? 答:jsp:include 引入一个文件 jsp:useBean 实例化JavaBean jsp:setProperty 设置JavaBean属性 jsp:getProperty 输出JavaBean属性 jsp:...

Global site tag (gtag.js) - Google Analytics