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(); } } }; }
相关推荐
SAX(Simple API for XML)是XML解析器的一种,它采用事件驱动的方式处理XML文档,相较于DOM(Document Object Model)解析器,SAX解析更加轻量级和高效。 SAX解析的核心思想是读取XML文档时,每当遇到一个元素、...
SAX(Simple API for XML)是XML解析的一种方式,它以事件驱动的方式处理XML文档,适用于处理大型或内存有限的环境。 SAX解析器逐行读取XML文档,当遇到如文档开始、元素开始、元素结束、属性等结构时,会触发相应...
Java作为一种强大的编程语言,提供了多种解析XML文档的方法,其中包括DOM(Document Object Model)和SAX(Simple API for XML)。本压缩包文件“XML-java.rar”包含了关于使用Java解析XML的实例,特别强调了SAX解析...
java xmlSAX 解析,简单易使用。
SAX(Simple API for XML)是处理XML文档的一种事件驱动模型,相较于DOM(Document Object Model)解析,SAX更加轻量级,适用于处理大体积的XML文件。本文将详细介绍如何在Android中使用SAX方式创建和解析XML。 ###...
SAX(Simple API for XML)是XML解析器的一种,它以事件驱动的方式解析XML文档,而非DOM(Document Object Model)解析器那样将整个XML文档加载到内存中。SAX解析器在处理大型XML文件时更高效,因为它只在需要时读取...
SAX是一个解析速度快并且占用内存少的xml解析器,非常适合用于Android等移动设备。 SAX解析XML文件采用的是事件驱动,也就是说,它并不需要解析完整个文档,在按内容顺序解析文档的过程中,SAX会判断当前读到的字符...
- 创建SAX解析器:使用`org.xml.sax.helpers.DefaultHandler`定义事件处理器,并通过`org.xml.sax.XMLReader`设置处理器。 - 解析XML文件:使用`XMLReader`的`parse()`方法解析XML文件。 - 处理事件:在事件处理器的...
本文将重点讨论SAX解析器,并通过描述中的"test_sax.rar"压缩包中的示例,讲解如何使用SAX解析器在Visual Studio 20(VS20)环境下读取XML文档。 SAX解析器是一种基于事件驱动的解析方式,它不会一次性加载整个XML...
在Java中,处理XML文件主要有两种解析器:DOM(Document Object Model)和SAX(Simple API for XML)。这两种解析方式各有特点,适用于不同的场景。 1. DOM解析: DOM解析器将整个XML文档加载到内存中,构建一个树...
《VC++实现的SAX XML解析器:非连续性分析详解》 XML(eXtensible Markup Language)作为一种通用的数据交换格式,广泛应用于各种软件系统之间的数据交互。在处理大型XML文档时,为了提高效率和节省内存,通常采用...
SAX(Simple API for XML)是XML的一种解析器,它采用事件驱动的方式处理XML文档,非常适合处理大型或内存有限的设备上的XML文件,如Android手机。 SAX解析的基本原理是,当解析器读取XML文档时,遇到每个元素、...
在Android开发中,由于内存限制和性能优化的需求,通常会选择SAX(Simple API for XML)解析器来读取XML文件,而非DOM(Document Object Model)解析器,因为SAX是基于事件驱动的,它按需逐个处理XML元素,占用内存...
SAX(Simple API for XML)是一种轻量级的XML解析技术,主要用于读取XML文档。相较于DOM(Document Object Model)解析器,SAX解析器占用更少的内存和处理时间,因为它不会一次性加载整个XML文档到内存,而是采用...
SAX(Simple API for XML)是一种事件驱动的XML解析器,它以流式的方式处理XML文档,对内存的需求较小,适合处理大型XML文件。SAX2是SAX的第二版本,它在SAX的基础上进行了一些改进和扩展。 在C++中,Xerces-C++库...
使用SAX方式解析XML SAX 是读取和操作 XML 数据的更快速、更轻量的方 法。SAX 允许您在读取文档时处理它,从而不必等待整个文档被存储之后才采取操作。它不涉及 DOM 所必需的开销和概念跳跃。 SAX API是一个基于事件...
本节将探讨两种常用的XML解析方式:XMLPull和XMLSAX。 1. XMLPull解析: XMLPull是一种轻量级的解析器,适用于资源有限的环境,如移动设备。它不需预先加载整个XML文档,而是采用拉(pull)的方式,允许应用程序按...
本文将深入探讨两种主要的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是一种事件驱动的解析模型,与DOM(文档对象模型)解析器不同,DOM会一次性加载整个XML文档到内存中,而SAX则按需逐个处理XML元素,显著减少了内存占用,尤其适合处理大型XML文件。saxy正是基于这一模型,为...