在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()) ; } } }
读取效果同上节课。
相关推荐
- `xmlSAXPaserDemo`可能是一个包含示例代码的Android项目,用于演示如何实际使用SAX解析XML文件。 - 项目中可能包括网络请求模块、SAX解析器处理类以及展示解析结果的UI部分。 通过以上步骤,开发者可以在...
下面是一个SAX解析XML的示例(有点长,因为详细注解了SAX事件处理的所有方法),SAX API中主要有四种处理事件的接口,它们分别是ContentHandler,DTDHandler, EntityResolver 和 ErrorHandler 。下面的例子可能...
SAX解析器为Android开发者提供了一种高效且内存友好的方式来解析XML数据,尤其适用于处理大量或复杂的数据。在`SaxTest`项目中,你可以找到一个具体的示例,演示如何将这些概念整合到实际的Android应用中。
本教程将详细讲解如何在Android中使用SAX解析XML。 首先,要使用SAX解析XML,我们需要理解其工作原理。SAX解析器会逐个读取XML文档的元素,每当遇到文档的开始、结束、文本等事件时,就会触发相应的回调方法。...
总结,SAX解析XML在Android开发中是一个实用且高效的解决方案,尤其适用于处理大型XML文件。通过创建自定义的事件处理器,可以灵活地解析和处理XML数据,满足各种业务需求。不过,需要注意的是,由于SAX是基于事件的...
下面我们将详细讨论如何在Android中使用SAX解析XML。 首先,我们需要了解SAX解析的基本原理。SAX解析器在读取XML文档时,会触发一系列的事件,如开始文档、开始元素、结束元素、字符数据等。开发者需要定义一个...
以下是一个使用SAX解析XML文件的基本步骤: 1. **创建解析器**: 首先,我们需要创建一个SAX解析器实例。在Java中,这通常通过`SAXParserFactory`类完成。设置解析器属性,然后调用`newSAXParser()`方法获取`...
本示例"android sax解析xml模板源码"提供了一个使用SAX解析XML的实例,方便开发者直接导入到自己的项目中使用。 SAX解析XML的基本流程如下: 1. **创建解析器**:在Android中,我们需要使用`SAXParserFactory`来...
"SAX解析String类型XML字符串"就是一种高效且节省内存的方式去解析XML数据,特别是当XML文件较大时,SAX解析器优于DOM解析器,因为它不需要一次性加载整个XML到内存中。下面我们将深入探讨这一主题。 首先,XML...
Android中SAX解析XML的demo
下面详细介绍Android中使用SAX解析XML的关键步骤和相关知识点: 1. 引入库:在Android项目中,SAX解析器已经内置于`org.xml.sax`包中,无需额外导入库。 2. 创建事件处理器:你需要创建一个类来实现`...
本篇将详细讲解如何在Android环境中使用SAX解析XML。 1. **SAX解析的基本原理** SAX解析器读取XML文档时,遇到每个元素、属性、文本等都会触发相应的事件,开发者需要注册事件处理器来处理这些事件。这种方式适合...
本文将详细介绍如何在Android中使用SAX方式创建和解析XML。 ### 1. Android中创建XML文件 创建XML文件通常在服务器端完成,然后通过HTTP请求传递到Android客户端。不过,如果需要在本地生成XML,可以使用Java的`...
在Android项目中,通常不需要额外添加依赖,因为Android SDK已经内置了SAX解析器。 2. 创建解析器事件监听器 创建一个继承自`DefaultHandler`的类,重写其中的回调方法,例如`startElement`、`endElement`和`...
### Android中使用SAX解析XML 1. **引入库**:在Android项目中,SAX解析器已经内置在`org.xml.sax`包中,无需额外导入库。 2. **创建ContentHandler**:创建一个实现了`org.xml.sax.ContentHandler`接口的类,重写...
本文将详细介绍如何在Android中使用SAX解析XML。 首先,理解SAX解析的基本原理。SAX解析器在读取XML文档时,会触发一系列的事件,例如开始文档、结束文档、开始元素、结束元素等。开发者需要创建一个实现了`...
XML(eXtensible Markup Language)是一种用于标记数据的语言,广泛应用于Android开发中,用于存储配置、数据交换等。...通过学习和实践,你可以掌握在Android中使用SAX解析XML的技能,提升数据处理的能力。
以下是使用SAX解析XML的基本步骤: - 创建`DefaultHandler`子类,重写关键方法如`startElement`、`endElement`和`characters`。 - 实例化`SAXParserFactory`,然后获取`SAXParser`。 - 使用`parse`方法解析XML文件...
本文将详细介绍如何在Android中使用SAX方式解析XML。 **SAX解析器的工作原理** SAX解析器读取XML文件时,遇到每个元素、属性、文本等都会触发相应的事件,开发者需要通过实现ContentHandler接口来处理这些事件。...
在Android 4.0的网络编程中,SAX解析常用于解析服务器返回的XML数据。以下是一些关键步骤和概念: 1. **设置解析器**: 首先,我们需要创建一个`DefaultHandler`的子类,重写其中的回调方法,例如`startElement()`、...