主要的Acivity

package com.xml.xml;

import java.io.Serializable;

import java.util.ArrayList;

import java.util.List;

import java.util.Map;

import javax.xml.parsers.SAXParserFactory;

import org.xml.sax.InputSource;

import org.xml.sax.XMLReader;

import android.os.Bundle;

import android.app.Activity;

import android.content.Intent;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.Button;

/**

* 主Activity

* @author 吕檀溪

*

*/

public class MainActivity extends Activity {

private Button but;

public static List> list=new ArrayList>();

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

but=(Button) findViewById(R.id.but);

but.setOnClickListener(new ButtonClick());

}

class ButtonClick implements OnClickListener{

@Override

public void onClick(View view) {

//得到产生SAX的生产工厂

SAXParserFactory  factory=SAXParserFactory.newInstance();

try {

//得到获取XML的对象

XMLReader reader=factory.newSAXParser().getXMLReader();

//绑定读书数据的类

reader.setContentHandler(new MySaxRead());

//获取需要读取的.xml文件

reader.parse(new InputSource(MainActivity.class.getClassLoader().getResourceAsStream("user.xml")));

//绑定数据

Intent intent=new Intent();

intent.putExtra("list", (Serializable)list);

intent.setClass(MainActivity.this, ArrayActivity.class);

startActivity(intent);

} catch (Exception e) {

e.printStackTrace();

}

}

}

}

解析xml的Acitity

package com.xml.xml;

import java.io.File;

import java.util.ArrayList;

import java.util.HashMap;

import java.util.List;

import java.util.Map;

import org.xml.sax.Attributes;

import org.xml.sax.SAXException;

import org.xml.sax.helpers.DefaultHandler;

/**

* 读取xml文件的类,继承了DefaultHandler

* 这里的五个方法都是从DefaultHandler重写的

* @author 吕檀溪

*

*/

public class MySaxRead extends DefaultHandler{

private String tagName;

private List> list=new ArrayList>();

private  String name;

//结束Document的方法,并给MainActivity连的list赋值

@Override

public void endDocument() throws SAXException {

MainActivity.list=this.list;

}

//结束标签的读取,并给结束标签添加一个标记

@Override

public void endElement(String uri, String localName, String qName)

throws SAXException {

tagName=File.separator+localName;

}

//开始读取内容

@Override

public void startDocument() throws SAXException {

}

//开始读取标签

@Override

public void startElement(String uri, String localName, String qName,

Attributes attr) throws SAXException {

//获取没有前缀的标签名

tagName=localName;

//判断是否是我们需要的标签

if("worker".equals(tagName)){

//循环得到标签的属性

for (int i = 0; i

System.out.println(attr.getLocalName(i)+"=="+attr.getValue(i));

}

}

}

//得到便签的值

@Override

public void characters(char[] ch, int start, int length)

throws SAXException {

if("name".equals(tagName)){

name=new String(ch, start, length);

}else if("age".equals(tagName)){

//这个步骤很关键,因为这里没做好就会出现空值的现象;这里是先把name的值存在全局变量中

//然后在根据age的非空值一起存进map集合

Map map=new HashMap();

String age=new String(ch, start, length);

map.put("name", name);

map.put("age", age);

list.add(map);

}

}

}

列表显示的Activity

package com.xml.xml;

import java.util.List;

import java.util.Map;

import android.app.ListActivity;

import android.content.Intent;

import android.os.Bundle;

import android.widget.SimpleAdapter;

/**

* 做一个列表显示

* @author 吕檀溪

*

*/

public class ArrayActivity extends ListActivity{

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.array);

//得到传过来得到Intent

Intent intent=getIntent();

//得到在Intent绑定数数据

List> list=(List>) intent.getSerializableExtra("list");

//给SimpleAdapter绑定需要显示的数据,以及制定显示的规范

SimpleAdapter adapter=new SimpleAdapter(this, list, R.layout.user, new String[]{"name","age"}, new int[]{R.id.name,R.id.age});

setListAdapter(adapter);

}

}

主要的布局文件main.xml

http://schemas.android.com/apk/res/android

"

xmlns:tools="

http://schemas.android.com/tools

"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:paddingBottom="@dimen/activity_vertical_margin"

android:paddingLeft="@dimen/activity_horizontal_margin"

android:paddingRight="@dimen/activity_horizontal_margin"

android:paddingTop="@dimen/activity_vertical_margin"

tools:context=".MainActivity" >

android:id="@+id/but"

android:layout_height="wrap_content"

android:layout_width="wrap_content"

android:text="解析XML"

/>

配置需要列表显示的文件

1、申明列表文件array.xml

http://schemas.android.com/apk/res/android

"

xmlns:tools="

http://schemas.android.com/tools

"

android:layout_width="match_parent"

android:layout_height="match_parent"

>

android:id="@+id/android:list"

android:layout_height="wrap_content"

android:layout_width="fill_parent"

android:drawSelectorOnTop="false"

android:scrollbars="vertical"

>

2、数据显示文件user.xml

http://schemas.android.com/apk/res/android

"

xmlns:tools="

http://schemas.android.com/tools

"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="horizontal"

>

android:id="@+id/name"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_marginLeft="20pt"

/>

android:id="@+id/age"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_marginLeft="20pt"

/>

注册Activity的文件AndroidManifest.xml

package="com.xml.xml"

android:versionCode="1"

android:versionName="1.0" >

android:minSdkVersion="14"

android:targetSdkVersion="18" />

android:allowBackup="true"

android:icon="@drawable/ic_launcher"

android:label="@string/app_name"

android:theme="@style/AppTheme" >

android:name="com.xml.xml.MainActivity"

android:label="@string/app_name" >

最后是需要解析的xml文件user.xml,放在src文件目录下

迈克儿.乔丹

17

周杰伦

18

android xml sax解析,《android用SAX解析xml》相关推荐

  1. :Android网络编程--XML之解析方式:SAX

    任何放置在资源(res)目录下的内容可以通过应用程序的R类访问,这是被Android编译过的,而任何放置在资产(assets)目录下的内容会保持它的原始文件格式,为了读取它们,必须使用AssetMan ...

  2. android用sax解析xml,详解android使用SAX解析XML文件

    解析XML的方式有很多种,大家比较熟悉的可能就是DOM解析. DOM(文件对象模型)解析:解析器读入整个文档,然后构建一个驻留内存的树结构,然后代码就可以根据DOM接口来操作这个树结构了. 优点:整个 ...

  3. convert android layout xml,详解Android之解析XML文件三种方式(DOM,PULL,SAX)

    1.xml文件代码 ${fq.content} ${fq.time} 2.XML网页效果图 3.Android代码 1.布局文件 xmlns:tools="http://schemas.an ...

  4. android开发--mp3播放器项目源代码(xml文件解析,.lrc,.mp3文件下载,同时显示歌词)

    一.mp3播放器源代码 1.MainActivity.java:在此中主要负责播放器首页的功能,包括服务器上的下载列表,和SD卡上已经下载的mp3文件列表package com.wyt.MP3play ...

  5. 安卓开发Android studio学习笔记12:读取解析XML(案例演示)

    Android studio学习笔记 第一步:配置Student.XML 第二步:配置activity_main.xml 第三步:配置student.xml 第四步:配置Student用户类 第五步: ...

  6. Android解析xml的方法,Android中解析XML格式数据的方法

    XML介绍:Extensible Markup Language,即可扩展标记语言 一.概述 Android中解析XML格式数据大致有三种方法: SAX DOM PULL 二.详解 2.1 SAX S ...

  7. XML文档DOM、SAX、STAX解析方式

    2019独角兽企业重金招聘Python工程师标准>>> XML解析方式有三种:DOM.SAX.StAX xml文档每个成分都是一个节点,每个xml标签对应一个元素节点:整个文档是一个 ...

  8. Android数据存储——2.文件存储_C_DOM解析XML文档

    今天学习Android数据存储--文件存储_DOM解析XML文档 位于org.w3c.dom操作XML会比较简单,就是将XML看做是一颗树,DOM就是对这颗树的一个数据结构的描述,但对大型XML文件效 ...

  9. Android 天气预报【解析XML / Json文件(2种方式:手动解析、Gson库解析)】

    源码 [工程文件]:https://gitee.com/lwx001/Weather XML : activity_main.xml : <RelativeLayout xmlns:androi ...

  10. android XMl 解析神奇xstream 五: 把复杂对象转换成 xml ,并写入SD卡中的xml文件

    前言:对xstream不理解的请看: android XMl 解析神奇xstream 一: 解析android项目中 asset 文件夹 下的 aa.xml 文件 android XMl 解析神奇xs ...

最新文章

  1. LeetCode简单题之整数的各位积和之差
  2. 利用WSS搭建学生作业平台
  3. 【深度学习入门到精通系列】进化策略 (Evolution Strategy)
  4. 最全的MySQL基础【燕十八传世】
  5. Python网络爬虫理解
  6. php 结果集 json,在PHP中提取JSONP结果集
  7. 您的主机不满足在启用Hyper-V 或DeviceCredential Guard的情况下运行VMware player的最低要求
  8. 01-MyBatis入门程序
  9. pytorch 和 tensorflow2.0 方法替换
  10. 单例模式饿汉式/懒汉式的区别
  11. numpy—np.random.multivariate_normal
  12. Hibernate4实战   之   第五部分:Hibernate的事务和并发
  13. 总结:伺服电机控制及结合强弱电的控制系统
  14. docker(9):高级网络配置
  15. 12_传智播客iOS视频教程_注释和函数的定义和调用
  16. 二层、三层、四层交换机的区别
  17. Signal protocol 开源协议理解
  18. windows 7不能安装谷歌浏览器怎么办?
  19. php小偷程序--获取网站内容
  20. Spring 事务管理

热门文章

  1. 建模工具:octave
  2. js数字输入的验证~
  3. 面试官:软件测试没搞懂这些,哪里来的自信投简历? 刁钻问得高频的面试题(含答案)
  4. 天威诚信受邀参加第二届GIEC互联网文娱数字创新峰会
  5. open stack——Nove计算服务
  6. ajax 等待,等待所有的ajax请求都完成
  7. 2021年第六届数维杯B题 中小城市地铁运营与建设优化设计
  8. 51单片机 八音盒设计
  9. 创业者周鸿祎前传(西安交大时期)-看点-@虎嗅网
  10. Java实现阿里云云通短信通知发送