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文件的基本步骤: 1. **创建解析器**: 首先,我们需要创建一个SAX解析器实例。在Java中,这通常通过`SAXParserFactory`类完成。设置解析器属性,然后调用`newSAXParser()`方法获取`...
- SAX解析器逐行读取XML文件,当遇到文档的开始、元素开始、元素结束、文本内容、注释等事件时,会调用预先注册的处理器接口(如`ContentHandler`)中的方法。 - 解析器并不关心这些事件的具体处理,只负责触发...
SAX解析器逐行读取XML文件,只在需要时处理数据,显著降低了内存需求。 SAX解析的核心在于事件驱动模型。当解析器读取XML文件时,遇到开始元素、结束元素、字符数据等,它会触发相应的事件,并调用预先注册的处理器...
SAX(Simple API for XML)是XML解析器的一种,它采用事件驱动的方式对XML文档进行解析,而不是一次性加载整个文档到内存中,因此在处理大型XML文件时,SAX解析器具有较高的性能和较低的内存消耗。 标题“sax解析...
总结来说,XML SAX解析是一种高效的XML处理方式,尤其适用于处理大文件。通过事件驱动机制,开发者可以实现自定义的处理器,根据XML文档的结构动态响应,有效地节省了内存资源。在Java中,SAX解析可以通过JAXB和...
总之,SAX解析是一种高效的XML处理方式,尤其适用于处理大型XML文件。在Android开发中,它可以很好地与网络编程结合,用于解析服务器返回的XML数据。理解并熟练运用SAX解析,将有助于提升应用的性能和用户体验。在...
总结起来,XML SAX解析是一种高效、节省内存的XML处理方式,适用于大型XML文档。它通过事件驱动模型,仅在需要时处理数据,减少了内存消耗。在实际开发中,根据具体需求选择合适的解析策略,如DOM适用于需要随机访问...
总的来说,Java中的SAX解析XML文档是一种高效且灵活的方式,尤其适用于处理大文件或资源有限的环境。通过创建自定义的事件处理器,我们可以精确地控制解析过程,只处理关心的数据,而忽略其他部分,从而优化性能。
首先,SAX解析器以流式方式读取XML文档,当遇到文档的不同部分时,会触发相应的事件,如开始文档、开始元素、结束元素等。开发者可以注册事件处理器来响应这些事件,从而获取XML元素的信息。 1. **初始化解析器**:...
总的来说,DOM解析适用于小型XML文件,提供方便的数据访问,而SAX解析适用于大型XML文件,以低内存消耗为代价换取更高的效率。在实际开发中,选择哪种解析方式取决于项目需求和资源限制。同时,还可以考虑使用StAX...
本压缩包文件“XML-java.rar”包含了关于使用Java解析XML的实例,特别强调了SAX解析器的使用,并且提到了使用JDOM和JOM4J这两个Java库来处理XML。 1. **DOM解析**:DOM是一种树型结构,它将整个XML文档加载到内存中...
总结,选择DOM还是SAX解析XML取决于具体需求,包括文件大小、处理速度、内存限制以及是否需要随机访问数据。在实际开发中,根据项目特点灵活选择合适的解析方式,能有效提高程序性能和资源利用效率。
SAX解析器在读取XML文件时,会触发一系列的事件,例如开始文档、结束文档、开始元素、结束元素等。开发者需要创建一个实现了SAX解析器接口的类,即`DefaultHandler`或自定义的处理器,然后重写这些事件的方法,以便...
在Android开发中,XML文件广泛用于存储数据和配置信息,如布局、字符串资源、颜色等。解析XML文件是Android开发者必须掌握的一项技能。本篇将详细介绍Android中的SAX(Simple API for XML)解析方式。 SAX是一种...
SAX解析方式的核心思想是流式解析,它不会一次性加载整个XML文档到内存,而是逐行读取,遇到元素、属性等结构时触发相应的事件回调。这种方式对于内存管理非常友好,特别适合处理大型或内存受限环境中的XML文件。...
这种方式使得解析器不需要一次性加载整个XML文档到内存,因此对于大文件,SAX解析具有高效、低内存占用的特点。 SAX解析的基本步骤如下: 1. 创建解析器:首先,我们需要创建一个SAX解析器实例。在Java中,可以...
本篇文章将详细介绍如何在Android环境中使用SAX解析器来处理从网络获取的XML文件。 1. **XML与SAX解析基础** - XML是一种结构化的文本数据表示方式,它定义了标签、属性等规则,使数据具有自解释性。 - SAX解析器...
SAX是一种事件驱动的解析方式,相比DOM(Document Object Model)解析,它更节省内存,适用于处理大型XML文件。 首先,我们需要了解SAX解析的基本原理。SAX解析器在读取XML文档时,会触发一系列的事件,如开始文档...
总结起来,SAX解析XML文件是一种高效、节省内存的处理方式,适用于处理大型XML文档。通过实现`ContentHandler`接口,开发者可以定制化地处理XML文档中的各个结构元素,实现特定的功能需求。在实际项目中,根据需要...