`
DanielHan
  • 浏览: 57126 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
074641d7-eb86-343f-a745-65a0f693edb5
设计模式
浏览量:7364
社区版块
存档分类
最新评论

存储方式二:文件(XML SAX解析)

 
阅读更多
LinkMan.java
package com.example.saxdemo;

public class LinkMan {
	private String name;
	private String email;
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
}


MySAX.java
package com.example.saxdemo;

import java.util.ArrayList;
import java.util.List;

import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;

public class MySAX extends DefaultHandler {

	private List<LinkMan> all=null;
	private LinkMan man=null;
	private String curElement=null;
	@Override
	public void startDocument() throws SAXException {
		all=new ArrayList<LinkMan>();
	}
	
	@Override
	public void startElement(String uri, String localName, String qName,
			Attributes attributes) throws SAXException {
		if(localName.equals("linkman")){
			man=new LinkMan();
		}
		curElement=localName;
	}
	
	@Override
	public void characters(char[] ch, int start, int length)
			throws SAXException {
		if(man!=null){
			if(curElement.equals("name")){
				man.setName(new String(ch, start, length));
			}
			if(curElement.equals("email")){
				man.setEmail(new String(ch, start, length));
			}
		}
	}

	@Override
	public void endElement(String uri, String localName, String qName)
			throws SAXException {
		if(localName.equals("linkman")){
			all.add(man);
			man=null;
		}
		curElement=null;
	}
	
	@Override
	public void endDocument() throws SAXException {
		// TODO Auto-generated method stub
		super.endDocument();
	}

	public List<LinkMan> getAll() {
		return all;
	}
}


MainActivity.java
package com.example.saxdemo;

import java.io.File;
import java.io.IOException;
import java.util.List;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;

import android.app.Activity;
import android.os.Bundle;
import android.os.Environment;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends Activity {
	private TextView name=null;
	private TextView email=null;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		name=(TextView)findViewById(R.id.name);
		email=(TextView)findViewById(R.id.email);
		if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){
			File file=new File(Environment.getExternalStorageDirectory()+File.separator+"files/addresslist.xml");
			if(!file.exists()){//文件不存在
				return;
			}
			SAXParserFactory factory=SAXParserFactory.newInstance();
			SAXParser parser=null;
			try {
				parser=factory.newSAXParser();
			} catch (ParserConfigurationException | SAXException e) {
				e.printStackTrace();
			}
			MySAX mySAX=new MySAX();
			try {
				parser.parse(file, mySAX);
			} catch (SAXException | IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			List<LinkMan> all=mySAX.getAll();
			name.setText(all.get(0).getName());
			email.setText(all.get(0).getEmail());
		}else{
			Toast.makeText(this, "没有sdcard", Toast.LENGTH_LONG).show();
		}
	}
}

分享到:
评论

相关推荐

    Sax解析XML文件解析

    SAX解析器以流式的方式读取XML文档,当遇到文档的各个元素时,会触发相应的事件,如开始文档、开始元素、结束元素、字符数据等。程序员通过实现SAX解析器的回调接口来处理这些事件,从而解析XML内容。这种方式使得...

    Sax解析xml文件

    以下是一个使用SAX解析XML文件的基本步骤: 1. **创建解析器**: 首先,我们需要创建一个SAX解析器实例。在Java中,这通常通过`SAXParserFactory`类完成。设置解析器属性,然后调用`newSAXParser()`方法获取`...

    xml文件解析SAX

    - SAX解析器逐行读取XML文件,当遇到文档的开始、元素开始、元素结束、文本内容、注释等事件时,会调用预先注册的处理器接口(如`ContentHandler`)中的方法。 - 解析器并不关心这些事件的具体处理,只负责触发...

    SAX解析超大XML文件 示例代码

    SAX解析器逐行读取XML文件,只在需要时处理数据,显著降低了内存需求。 SAX解析的核心在于事件驱动模型。当解析器读取XML文件时,遇到开始元素、结束元素、字符数据等,它会触发相应的事件,并调用预先注册的处理器...

    sax解析xml本地读取xml

    SAX(Simple API for XML)是XML解析器的一种,它采用事件驱动的方式对XML文档进行解析,而不是一次性加载整个文档到内存中,因此在处理大型XML文件时,SAX解析器具有较高的性能和较低的内存消耗。 标题“sax解析...

    xml sax解析

    总结来说,XML SAX解析是一种高效的XML处理方式,尤其适用于处理大文件。通过事件驱动机制,开发者可以实现自定义的处理器,根据XML文档的结构动态响应,有效地节省了内存资源。在Java中,SAX解析可以通过JAXB和...

    XML解析之SAX解析DEMO

    总之,SAX解析是一种高效的XML处理方式,尤其适用于处理大型XML文件。在Android开发中,它可以很好地与网络编程结合,用于解析服务器返回的XML数据。理解并熟练运用SAX解析,将有助于提升应用的性能和用户体验。在...

    XML SAX解析

    总结起来,XML SAX解析是一种高效、节省内存的XML处理方式,适用于大型XML文档。它通过事件驱动模型,仅在需要时处理数据,减少了内存消耗。在实际开发中,根据具体需求选择合适的解析策略,如DOM适用于需要随机访问...

    Java SAX解析Xml文档Demo

    总的来说,Java中的SAX解析XML文档是一种高效且灵活的方式,尤其适用于处理大文件或资源有限的环境。通过创建自定义的事件处理器,我们可以精确地控制解析过程,只处理关心的数据,而忽略其他部分,从而优化性能。

    sax解析xml尤其是获取元素的值或者内容

    首先,SAX解析器以流式方式读取XML文档,当遇到文档的不同部分时,会触发相应的事件,如开始文档、开始元素、结束元素等。开发者可以注册事件处理器来响应这些事件,从而获取XML元素的信息。 1. **初始化解析器**:...

    j2ee10:xml01:dom解析和sax解析

    总的来说,DOM解析适用于小型XML文件,提供方便的数据访问,而SAX解析适用于大型XML文件,以低内存消耗为代价换取更高的效率。在实际开发中,选择哪种解析方式取决于项目需求和资源限制。同时,还可以考虑使用StAX...

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

    本压缩包文件“XML-java.rar”包含了关于使用Java解析XML的实例,特别强调了SAX解析器的使用,并且提到了使用JDOM和JOM4J这两个Java库来处理XML。 1. **DOM解析**:DOM是一种树型结构,它将整个XML文档加载到内存中...

    xml解析文件的两种方式

    总结,选择DOM还是SAX解析XML取决于具体需求,包括文件大小、处理速度、内存限制以及是否需要随机访问数据。在实际开发中,根据项目特点灵活选择合适的解析方式,能有效提高程序性能和资源利用效率。

    [Android]使用SAX解析XML文件

    SAX解析器在读取XML文件时,会触发一系列的事件,例如开始文档、结束文档、开始元素、结束元素等。开发者需要创建一个实现了SAX解析器接口的类,即`DefaultHandler`或自定义的处理器,然后重写这些事件的方法,以便...

    android xml文件解析 SAX

    在Android开发中,XML文件广泛用于存储数据和配置信息,如布局、字符串资源、颜色等。解析XML文件是Android开发者必须掌握的一项技能。本篇将详细介绍Android中的SAX(Simple API for XML)解析方式。 SAX是一种...

    SAX方式解析xml

    SAX解析方式的核心思想是流式解析,它不会一次性加载整个XML文档到内存,而是逐行读取,遇到元素、属性等结构时触发相应的事件回调。这种方式对于内存管理非常友好,特别适合处理大型或内存受限环境中的XML文件。...

    SAX对xml文档进行解析

    这种方式使得解析器不需要一次性加载整个XML文档到内存,因此对于大文件,SAX解析具有高效、低内存占用的特点。 SAX解析的基本步骤如下: 1. 创建解析器:首先,我们需要创建一个SAX解析器实例。在Java中,可以...

    android使用SAX解析xml

    本篇文章将详细介绍如何在Android环境中使用SAX解析器来处理从网络获取的XML文件。 1. **XML与SAX解析基础** - XML是一种结构化的文本数据表示方式,它定义了标签、属性等规则,使数据具有自解释性。 - SAX解析器...

    Java解析XML文档(二):sax读取xml文件导出excel

    SAX是一种事件驱动的解析方式,相比DOM(Document Object Model)解析,它更节省内存,适用于处理大型XML文件。 首先,我们需要了解SAX解析的基本原理。SAX解析器在读取XML文档时,会触发一系列的事件,如开始文档...

    sax解析xml文件

    总结起来,SAX解析XML文件是一种高效、节省内存的处理方式,适用于处理大型XML文档。通过实现`ContentHandler`接口,开发者可以定制化地处理XML文档中的各个结构元素,实现特定的功能需求。在实际项目中,根据需要...

Global site tag (gtag.js) - Google Analytics