`
zhengaihua
  • 浏览: 21700 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

xmlsax

 
阅读更多
package com.example.day_sax;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import org.xml.sax.Attributes;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import org.xml.sax.XMLReader;
import org.xml.sax.helpers.DefaultHandler;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class MainActivity extends Activity {

	private Button btn;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		btn = (Button) findViewById(R.id.jiexi);
		btn.setOnClickListener(listener);
	}

	private DefaultHandler handler = new DefaultHandler() {

		private List<Person> list;
		private String targetName;
		private Person p;

		@Override
		public void startDocument() throws SAXException {
			System.out.println("开始读取文件");
			list = new ArrayList<Person>();
			super.startDocument();
		}
		@Override
		public void endDocument() throws SAXException {
			System.err.println("文件读取完毕");
			super.endDocument();
		}
		@Override
		public void startElement(String uri, String localName, String qName,
				Attributes attributes) throws SAXException {
			targetName = localName;
			System.out.println("+++++++" + targetName);
			if ("student".equals(targetName)) {
				p = new Person();
				String id = attributes.getValue("id");
				p.setId(Integer.parseInt(id));
			}
			super.startElement(uri, localName, qName, attributes);
		}
		@Override
		public void endElement(String uri, String localName, String qName)
				throws SAXException {
			if ("student".endsWith(localName)) {
				list.add(p);
				p = null;
			}
			targetName = null;
			super.endElement(uri, localName, qName);
		}
		@Override
		public void characters(char[] ch, int start, int length)
				throws SAXException {
			if (targetName != null) {
				String text = new String(ch, start, length);
				System.out.println("text+++" + text);
				if ("name".equals(targetName)) {
					p.setName(text);
				} else if ("age".equals(targetName)) {
					p.setAge(text);
				}
			}
			super.characters(ch, start, length);
		}
	};
	OnClickListener listener = new OnClickListener() {
		@Override
		public void onClick(View v) {
			SAXParserFactory spf = SAXParserFactory.newInstance();
			try {
				SAXParser saxParser = spf.newSAXParser();
				XMLReader xmlReader = saxParser.getXMLReader();
				// 设置监听
				xmlReader.setContentHandler(handler);
				xmlReader.parse(new InputSource(getAssets().open("data1.xml")));
			} catch (ParserConfigurationException e) {
				e.printStackTrace();
			} catch (SAXException e) {
				e.printStackTrace();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	};
}

 

分享到:
评论

相关推荐

    xml sax解析

    SAX(Simple API for XML)是XML解析器的一种,它采用事件驱动的方式处理XML文档,相较于DOM(Document Object Model)解析器,SAX解析更加轻量级和高效。 SAX解析的核心思想是读取XML文档时,每当遇到一个元素、...

    XML SAX解析

    SAX(Simple API for XML)是XML解析的一种方式,它以事件驱动的方式处理XML文档,适用于处理大型或内存有限的环境。 SAX解析器逐行读取XML文档,当遇到如文档开始、元素开始、元素结束、属性等结构时,会触发相应...

    XML-java.rar_XML SAX_sax_sax xml_sax 解析 xml_xml using dom

    Java作为一种强大的编程语言,提供了多种解析XML文档的方法,其中包括DOM(Document Object Model)和SAX(Simple API for XML)。本压缩包文件“XML-java.rar”包含了关于使用Java解析XML的实例,特别强调了SAX解析...

    xmlSAX 解析

    java xmlSAX 解析,简单易使用。

    Android 创建与解析XML Sax方式

    SAX(Simple API for XML)是处理XML文档的一种事件驱动模型,相较于DOM(Document Object Model)解析,SAX更加轻量级,适用于处理大体积的XML文件。本文将详细介绍如何在Android中使用SAX方式创建和解析XML。 ###...

    SAX_XML.rar_XML SAX_sax xml_xml

    SAX(Simple API for XML)是XML解析器的一种,它以事件驱动的方式解析XML文档,而非DOM(Document Object Model)解析器那样将整个XML文档加载到内存中。SAX解析器在处理大型XML文件时更高效,因为它只在需要时读取...

    android入门级解析xml SAX

    SAX是一个解析速度快并且占用内存少的xml解析器,非常适合用于Android等移动设备。 SAX解析XML文件采用的是事件驱动,也就是说,它并不需要解析完整个文档,在按内容顺序解析文档的过程中,SAX会判断当前读到的字符...

    XML.rar_XML SAX_XML java_dom xml_java xml_java解析xml

    - 创建SAX解析器:使用`org.xml.sax.helpers.DefaultHandler`定义事件处理器,并通过`org.xml.sax.XMLReader`设置处理器。 - 解析XML文件:使用`XMLReader`的`parse()`方法解析XML文件。 - 处理事件:在事件处理器的...

    test_sax.rar_XML SAX vs20_sax_sax xml_读取XML文档

    本文将重点讨论SAX解析器,并通过描述中的"test_sax.rar"压缩包中的示例,讲解如何使用SAX解析器在Visual Studio 20(VS20)环境下读取XML文档。 SAX解析器是一种基于事件驱动的解析方式,它不会一次性加载整个XML...

    xml_DOM_SAX.rar_DOM_dom xml saxxml_java dom_sax

    在Java中,处理XML文件主要有两种解析器:DOM(Document Object Model)和SAX(Simple API for XML)。这两种解析方式各有特点,适用于不同的场景。 1. DOM解析: DOM解析器将整个XML文档加载到内存中,构建一个树...

    VC_WND_SAX.rar_sax_sax vc_vc SAX _vc xml sax

    《VC++实现的SAX XML解析器:非连续性分析详解》 XML(eXtensible Markup Language)作为一种通用的数据交换格式,广泛应用于各种软件系统之间的数据交互。在处理大型XML文档时,为了提高效率和节省内存,通常采用...

    android----xml Sax解析示例

    SAX(Simple API for XML)是XML的一种解析器,它采用事件驱动的方式处理XML文档,非常适合处理大型或内存有限的设备上的XML文件,如Android手机。 SAX解析的基本原理是,当解析器读取XML文档时,遇到每个元素、...

    SAX--XML文件读写

    在Android开发中,由于内存限制和性能优化的需求,通常会选择SAX(Simple API for XML)解析器来读取XML文件,而非DOM(Document Object Model)解析器,因为SAX是基于事件驱动的,它按需逐个处理XML元素,占用内存...

    sax解析xml文件

    SAX(Simple API for XML)是一种轻量级的XML解析技术,主要用于读取XML文档。相较于DOM(Document Object Model)解析器,SAX解析器占用更少的内存和处理时间,因为它不会一次性加载整个XML文档到内存,而是采用...

    SAX2方法读取XML文件

    SAX(Simple API for XML)是一种事件驱动的XML解析器,它以流式的方式处理XML文档,对内存的需求较小,适合处理大型XML文件。SAX2是SAX的第二版本,它在SAX的基础上进行了一些改进和扩展。 在C++中,Xerces-C++库...

    android 使用Sax解析XML 源码实例

    使用SAX方式解析XML SAX 是读取和操作 XML 数据的更快速、更轻量的方 法。SAX 允许您在读取文档时处理它,从而不必等待整个文档被存储之后才采取操作。它不涉及 DOM 所必需的开销和概念跳跃。 SAX API是一个基于事件...

    3.8 解析XML

    本节将探讨两种常用的XML解析方式:XMLPull和XMLSAX。 1. XMLPull解析: XMLPull是一种轻量级的解析器,适用于资源有限的环境,如移动设备。它不需预先加载整个XML文档,而是采用拉(pull)的方式,允许应用程序按...

    sax,dom解析xml和生产xml文件

    本文将深入探讨两种主要的XML解析方法——SAX(Simple API for XML)和DOM(Document Object Model),并讲解如何使用它们来解析XML文件以及生成XML文件。 一、SAX解析XML SAX是一种事件驱动的解析器,它逐行扫描...

    SAX.java 操作xml文件

    SAX.java 操作xml文件SAX.java 操作xml文件SAX.java 操作xml文件SAX.java 操作xml文件SAX.java 操作xml文件SAX.java 操作xml文件SAX.java 操作xml文件SAX.java 操作xml文件

    saxy:Elixir中的一种快速,易于使用且符合XML 1.0的XML SAX解析器

    SAX是一种事件驱动的解析模型,与DOM(文档对象模型)解析器不同,DOM会一次性加载整个XML文档到内存中,而SAX则按需逐个处理XML元素,显著减少了内存占用,尤其适合处理大型XML文件。saxy正是基于这一模型,为...

Global site tag (gtag.js) - Google Analytics