`
xiang37
  • 浏览: 428261 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

Android读取XML文件(SAX)

阅读更多

 

package com.xiva.service;

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

import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;
import com.xiva.domain.Person;

public class XmlContentHandler extends DefaultHandler{

	private List<Person> personList;
	private Person person;
	private String perTag; 
	
	
	public List<Person> getPersonList() {
		return personList;
	}

	@Override
	public void startDocument() throws SAXException {
		// TODO Auto-generated method stub
		personList = new ArrayList<Person>();
	}

	@Override
	public void characters(char[] ch, int start, int length)
			throws SAXException {
		if(person!=null){
			String data = new String(ch,start,length);
			if("name".equals(perTag))
			{
				person.setPersonName(data);
			}else if("age".equals(perTag))
			{
				person.setAge(data);
			}
		}
	}

	@Override
	public void startElement(String uri, String localName, String qName,
			Attributes attributes) throws SAXException {

		if("person".equals(localName))
		{
			person = new Person();
			person.setId(new Integer(attributes.getValue("id")));
		}
		perTag = localName;
		
	}
	
	@Override
	public void endElement(String uri, String localName, String qName)
			throws SAXException {
		if("person".equals(localName) && person!=null){
			personList.add(person);
			person = null;
		}
		perTag = null;
	}
}

 package com.xiva.xml;

import java.io.InputStream;
import java.util.List;

import com.xiva.domain.Person;
import com.xiva.service.SAXService;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.widget.TextView;
import android.widget.Toast;

public class XMLActivity extends Activity {
    /** Called when the activity is first created. */
	
	private static final String TAG = "XMLActivity";
	
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        TextView text = (TextView)this.findViewById(R.id.content);
        InputStream iStream = XMLActivity.class.getClassLoader().getResourceAsStream("person.xml");
        List<Person> personList;
		try {
			personList = SAXService.readXML(iStream);
	        StringBuffer strB = new StringBuffer();
	        for(Person person:personList)
	        {
	        	String str = person.toString();
	        	strB.append(str);
	        }
	        text.setText(strB);
		}
	    catch(Exception e){
			Log.i(TAG, "Xml Load failure!");
			Toast.makeText(XMLActivity.this, "Xml Load failure!", 1).show();
			e.printStackTrace();
		}

    }
}

 完整代码见附件。

分享到:
评论

相关推荐

    android 实用sax 读取xml文件内容 附

    本篇文章将详细介绍如何利用SAX解析器来读取XML文件内容,这是一种轻量级、事件驱动的解析方式,特别适合处理大文件。 SAX(Simple API for XML)解析器在读取XML文件时,不会一次性加载整个文件到内存,而是逐行或...

    xml.rar_android_android sax_android sax xml_java xml_sax

    - SAX是一种事件驱动的解析器,它逐行读取XML文档,遇到元素、属性等时触发相应的事件回调。这种方式内存消耗小,适用于处理大型XML文件。 - Android中的SAX解析器实现为`org.xml.sax.helpers.DefaultHandler`,...

    android下解析xml文件的demo

    SAX解析器是事件驱动的,它逐行读取XML文件,遇到每个元素时触发相应的事件。这种方式适用于处理大型XML文件,因为它不需要一次性加载整个文件。 在"ReadXMLDemo"中,使用SAX解析的步骤如下: - 实现`...

    android 读取Excel文件转成xml文件

    1. **Android读取Excel文件**: - Android本身并不支持直接读取Excel文件,因为这些文件通常由Microsoft Office或类似的桌面应用程序创建。要读取Excel文件,需要引入第三方库,如jxl.jar,这是一个Java库,可以...

    android xml文件解析 SAX

    SAX是一种事件驱动的XML解析器,它不会像DOM解析器那样将整个XML文档加载到内存中,而是逐行读取,遇到每个元素或属性时触发相应的事件回调。这种方式节省了内存,特别适合处理大型XML文件。 1. **SAX解析的基本...

    android解析XML文件样例SAX方法

    接着,我们可以使用`Environment.getExternalStorageDirectory()`来获取SD卡的根目录,并读取XML文件: ```java File xmlFile = new File(Environment.getExternalStorageDirectory(), "example.xml"); ``` 3....

    android 解析XML文件 生成XML文件

    SAX(Simple API for XML)是一种事件驱动的解析器,它不会一次性加载整个XML文档到内存,而是逐行读取,遇到元素、属性等时触发相应的事件。这种解析方式适用于处理大型XML文件,节省内存资源。以下是在Java和...

    Android 解析xml文件

    2. **SAX解析器**:Simple API for XML(SAX)解析器采用事件驱动模型,逐行读取XML文件,遇到元素、属性等时触发相应的回调函数,不会一次性加载整个文件,适合处理大文件。 3. **Pull解析器**:类似于SAX解析器,...

    DOM读取XML文件

    在Android开发中,DOM(Document Object Model)解析是一种常见的处理XML文件...不过,对于大型XML文件,可能需要考虑使用SAX(Simple API for XML)或者StAX(Streaming API for XML)等拉式解析器,以减少内存消耗。

    [Android实例] Android之解析XML文件

    SAX是一种基于事件驱动的XML解析方式,其工作原理是在读取XML文档时,每当遇到特定的事件(如开始标签、结束标签等)时触发相应的事件处理方法。与DOM(Document Object Model)解析方式不同,SAX不需要将整个XML...

    Android 创建与解析XML Sax方式

    然后,在主程序中使用SAX解析器读取XML文件: ```java SAXParserFactory factory = SAXParserFactory.newInstance(); try { SAXParser parser = factory.newSAXParser(); MyContentHandler handler = new ...

    android程序读取网上xml文件

    在Android开发中,读取网上XML文件是一项常见的任务,尤其当需要从远程服务器获取结构化数据时。XML(Extensible Markup Language)是一种用于存储和传输数据的标记语言,它的结构清晰,易于解析。本篇文章将深入...

    Android XML解析——Sax解析XML

    4. **启动解析**:使用`org.xml.sax.XMLReader`读取XML文件并开始解析。可以使用`org.xml.sax.InputSource`来从文件、流或其他来源读取XML。 ```java import org.xml.sax.Attributes; import org.xml.sax....

    Android读取XML文件(DOM)

    总结起来,Android应用中的XML解析通常涉及DOM、SAX和Pull等多种方法,DOM解析适合对XML进行完整读取和修改,但对内存消耗较高。在选择解析策略时,应根据项目需求和资源限制来权衡。在处理XML文件时,一定要注意...

    [Android]使用SAX解析XML文件

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

    Android中,使用SAX和PULL解析天气预报XML

    SAX是一种事件驱动的解析方式,它逐行读取XML文档,当遇到标签、属性或其他元素时,会触发相应的事件回调。这种解析方式内存占用小,适合处理大文件,因为它不需要一次性加载整个XML到内存。在Android中,使用SAX...

    SAX--XML文件读写

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

    android sax ,dom生成xml文件

    本文将深入探讨两种主要的XML文件生成方法:SAX(Simple API for XML)和DOM(Document Object Model),并结合Android环境进行详细阐述。 首先,我们来看SAX解析器。SAX是一种事件驱动的解析器,它不会一次性加载...

Global site tag (gtag.js) - Google Analytics