`

Android之Sax解析xml(4)

阅读更多

                   在Android中xml解析还是很重要的,主要有两种方法,一种是之前讲到的DOM解析,一种就这节课

Sax解析,其实两种解析的基本形式异曲同工。

第一步:定义节点

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

}

然后我们定义解析器,sax解析器功能是将xml文件数据全部取出,并且将数据封装的对象保存在list中,采取顺序方式,每次取出进行判断,并且将指定数据提出,最后将所有数据用getall拿出

public class MySax extends DefaultHandler {
	private List<LinkMan> all = null ;	// 保存多条数据
	private LinkMan man = null ;
	private String elementName = null ;	// 保存节点的名称
	
	@Override
	public void characters(char[] ch, int start, int length)
			throws SAXException {
		if(this.elementName != null) {	// 已经取得了元素名称
			String data = new String(ch,start,length) ;
			if("name".equals(this.elementName)) {
				this.man.setName(data) ;
			} else if ("email".equals(this.elementName)) {
				this.man.setEmail(data) ;
			}
		}
	}

	
	
	@Override
	public void endElement(String uri, String localName, String qName)
			throws SAXException {
		if("linkman".equals(localName)) {
			this.all.add(this.man) ;
			this.man = null ;	// 准备保存下次的数据
		}
		this.elementName = null;// 把元素名称清空
	}

	@Override
	public void startDocument() throws SAXException {
		this.all = new ArrayList<LinkMan>() ;	// 表示开始解析文档,所以要设置集合
	}

	@Override
	public void startElement(String uri, String localName, String qName,
			Attributes attributes) throws SAXException {
		if("linkman".equals(localName)) {	// 是一个linkman节点
			this.man = new LinkMan() ;	// 实例化LinkMan对象
		}
		this.elementName = localName ;	// 保存元素名称
	}

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

  最后定义Activity:

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

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		super.setContentView(R.layout.activity_main);
		this.name = (TextView) super.findViewById(R.id.name);
		this.email = (TextView) super.findViewById(R.id.email);
		this.but = (Button) super.findViewById(R.id.but);
		this.but.setOnClickListener(new OnClickListenerImpl());
	}

	private class OnClickListenerImpl implements OnClickListener {

		@Override
		public void onClick(View v) {
			if (!Environment.getExternalStorageState().equals(
					Environment.MEDIA_MOUNTED)) { // 不存在不操作
				return; // 返回到程序的被调用处
			}
			File file = new File(Environment.getExternalStorageDirectory()
					+ File.separator + "mldndata" + File.separator
					+ "member.xml"); // 要输出文件的路径
			if (!file.exists()) { // 文件不存在
				return;
			}
			SAXParserFactory factory = SAXParserFactory.newInstance() ;
			SAXParser parser = null ;
			MySax sax = new MySax() ;
			try {
				parser = factory.newSAXParser() ;
			} catch (ParserConfigurationException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} catch (SAXException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			try {
				parser.parse(file, sax) ;
			} catch (SAXException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} catch (IOException e) {
				// TODO Auto-generated catch block 
				e.printStackTrace();
			}
			List<LinkMan> all = sax.getAll() ;
			System.out.println(all.size());
			MainActivity.this.name.setText(all.get(0).getName()) ;
			MainActivity.this.email.setText(all.get(0).getEmail()) ;
		}

	}
}

 读取效果同上节课。

 

0
0
分享到:
评论

相关推荐

    android使用SAX解析xml

    - `xmlSAXPaserDemo`可能是一个包含示例代码的Android项目,用于演示如何实际使用SAX解析XML文件。 - 项目中可能包括网络请求模块、SAX解析器处理类以及展示解析结果的UI部分。 通过以上步骤,开发者可以在...

    android 使用Sax解析XML 源码实例

    下面是一个SAX解析XML的示例(有点长,因为详细注解了SAX事件处理的所有方法),SAX API中主要有四种处理事件的接口,它们分别是ContentHandler,DTDHandler, EntityResolver 和 ErrorHandler 。下面的例子可能...

    Android之SAX解析XML

    SAX解析器为Android开发者提供了一种高效且内存友好的方式来解析XML数据,尤其适用于处理大量或复杂的数据。在`SaxTest`项目中,你可以找到一个具体的示例,演示如何将这些概念整合到实际的Android应用中。

    android 使用sax解析XML

    本教程将详细讲解如何在Android中使用SAX解析XML。 首先,要使用SAX解析XML,我们需要理解其工作原理。SAX解析器会逐个读取XML文档的元素,每当遇到文档的开始、结束、文本等事件时,就会触发相应的回调方法。...

    [Android]使用SAX解析XML文件

    总结,SAX解析XML在Android开发中是一个实用且高效的解决方案,尤其适用于处理大型XML文件。通过创建自定义的事件处理器,可以灵活地解析和处理XML数据,满足各种业务需求。不过,需要注意的是,由于SAX是基于事件的...

    android使用SAX解析XML

    下面我们将详细讨论如何在Android中使用SAX解析XML。 首先,我们需要了解SAX解析的基本原理。SAX解析器在读取XML文档时,会触发一系列的事件,如开始文档、开始元素、结束元素、字符数据等。开发者需要定义一个...

    Sax解析xml文件

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

    android sax解析xml模板源码下载

    本示例"android sax解析xml模板源码"提供了一个使用SAX解析XML的实例,方便开发者直接导入到自己的项目中使用。 SAX解析XML的基本流程如下: 1. **创建解析器**:在Android中,我们需要使用`SAXParserFactory`来...

    android SAX解析String类型 XML 字符串

    "SAX解析String类型XML字符串"就是一种高效且节省内存的方式去解析XML数据,特别是当XML文件较大时,SAX解析器优于DOM解析器,因为它不需要一次性加载整个XML到内存中。下面我们将深入探讨这一主题。 首先,XML...

    Android中SAX解析XML的demo

    Android中SAX解析XML的demo

    Android SAX 解析XML

    下面详细介绍Android中使用SAX解析XML的关键步骤和相关知识点: 1. 引入库:在Android项目中,SAX解析器已经内置于`org.xml.sax`包中,无需额外导入库。 2. 创建事件处理器:你需要创建一个类来实现`...

    android sax解析xml

    本篇将详细讲解如何在Android环境中使用SAX解析XML。 1. **SAX解析的基本原理** SAX解析器读取XML文档时,遇到每个元素、属性、文本等都会触发相应的事件,开发者需要注册事件处理器来处理这些事件。这种方式适合...

    Android 创建与解析XML Sax方式

    本文将详细介绍如何在Android中使用SAX方式创建和解析XML。 ### 1. Android中创建XML文件 创建XML文件通常在服务器端完成,然后通过HTTP请求传递到Android客户端。不过,如果需要在本地生成XML,可以使用Java的`...

    Android PULL SAX解析XML

    在Android项目中,通常不需要额外添加依赖,因为Android SDK已经内置了SAX解析器。 2. 创建解析器事件监听器 创建一个继承自`DefaultHandler`的类,重写其中的回调方法,例如`startElement`、`endElement`和`...

    Android XML解析——Sax解析XML

    ### Android中使用SAX解析XML 1. **引入库**:在Android项目中,SAX解析器已经内置在`org.xml.sax`包中,无需额外导入库。 2. **创建ContentHandler**:创建一个实现了`org.xml.sax.ContentHandler`接口的类,重写...

    android sax 解析xml

    本文将详细介绍如何在Android中使用SAX解析XML。 首先,理解SAX解析的基本原理。SAX解析器在读取XML文档时,会触发一系列的事件,例如开始文档、结束文档、开始元素、结束元素等。开发者需要创建一个实现了`...

    Android XML解析之SAX解析

    XML(eXtensible Markup Language)是一种用于标记数据的语言,广泛应用于Android开发中,用于存储配置、数据交换等。...通过学习和实践,你可以掌握在Android中使用SAX解析XML的技能,提升数据处理的能力。

    Android SAX、DOM、Pull解析xml文件案例讲解

    以下是使用SAX解析XML的基本步骤: - 创建`DefaultHandler`子类,重写关键方法如`startElement`、`endElement`和`characters`。 - 实例化`SAXParserFactory`,然后获取`SAXParser`。 - 使用`parse`方法解析XML文件...

    android 以SAX方式解析xml

    本文将详细介绍如何在Android中使用SAX方式解析XML。 **SAX解析器的工作原理** SAX解析器读取XML文件时,遇到每个元素、属性、文本等都会触发相应的事件,开发者需要通过实现ContentHandler接口来处理这些事件。...

    XML解析之SAX解析DEMO

    在Android 4.0的网络编程中,SAX解析常用于解析服务器返回的XML数据。以下是一些关键步骤和概念: 1. **设置解析器**: 首先,我们需要创建一个`DefaultHandler`的子类,重写其中的回调方法,例如`startElement()`、...

Global site tag (gtag.js) - Google Analytics