android xml sax解析,《android用SAX解析xml》
主要的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》相关推荐
- :Android网络编程--XML之解析方式:SAX
任何放置在资源(res)目录下的内容可以通过应用程序的R类访问,这是被Android编译过的,而任何放置在资产(assets)目录下的内容会保持它的原始文件格式,为了读取它们,必须使用AssetMan ...
- android用sax解析xml,详解android使用SAX解析XML文件
解析XML的方式有很多种,大家比较熟悉的可能就是DOM解析. DOM(文件对象模型)解析:解析器读入整个文档,然后构建一个驻留内存的树结构,然后代码就可以根据DOM接口来操作这个树结构了. 优点:整个 ...
- 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 ...
- android开发--mp3播放器项目源代码(xml文件解析,.lrc,.mp3文件下载,同时显示歌词)
一.mp3播放器源代码 1.MainActivity.java:在此中主要负责播放器首页的功能,包括服务器上的下载列表,和SD卡上已经下载的mp3文件列表package com.wyt.MP3play ...
- 安卓开发Android studio学习笔记12:读取解析XML(案例演示)
Android studio学习笔记 第一步:配置Student.XML 第二步:配置activity_main.xml 第三步:配置student.xml 第四步:配置Student用户类 第五步: ...
- Android解析xml的方法,Android中解析XML格式数据的方法
XML介绍:Extensible Markup Language,即可扩展标记语言 一.概述 Android中解析XML格式数据大致有三种方法: SAX DOM PULL 二.详解 2.1 SAX S ...
- XML文档DOM、SAX、STAX解析方式
2019独角兽企业重金招聘Python工程师标准>>> XML解析方式有三种:DOM.SAX.StAX xml文档每个成分都是一个节点,每个xml标签对应一个元素节点:整个文档是一个 ...
- Android数据存储——2.文件存储_C_DOM解析XML文档
今天学习Android数据存储--文件存储_DOM解析XML文档 位于org.w3c.dom操作XML会比较简单,就是将XML看做是一颗树,DOM就是对这颗树的一个数据结构的描述,但对大型XML文件效 ...
- Android 天气预报【解析XML / Json文件(2种方式:手动解析、Gson库解析)】
源码 [工程文件]:https://gitee.com/lwx001/Weather XML : activity_main.xml : <RelativeLayout xmlns:androi ...
- android XMl 解析神奇xstream 五: 把复杂对象转换成 xml ,并写入SD卡中的xml文件
前言:对xstream不理解的请看: android XMl 解析神奇xstream 一: 解析android项目中 asset 文件夹 下的 aa.xml 文件 android XMl 解析神奇xs ...
最新文章
- LeetCode简单题之整数的各位积和之差
- 利用WSS搭建学生作业平台
- 【深度学习入门到精通系列】进化策略 (Evolution Strategy)
- 最全的MySQL基础【燕十八传世】
- Python网络爬虫理解
- php 结果集 json,在PHP中提取JSONP结果集
- 您的主机不满足在启用Hyper-V 或DeviceCredential Guard的情况下运行VMware player的最低要求
- 01-MyBatis入门程序
- pytorch 和 tensorflow2.0 方法替换
- 单例模式饿汉式/懒汉式的区别
- numpy—np.random.multivariate_normal
- Hibernate4实战 之 第五部分:Hibernate的事务和并发
- 总结:伺服电机控制及结合强弱电的控制系统
- docker(9):高级网络配置
- 12_传智播客iOS视频教程_注释和函数的定义和调用
- 二层、三层、四层交换机的区别
- Signal protocol 开源协议理解
- windows 7不能安装谷歌浏览器怎么办?
- php小偷程序--获取网站内容
- Spring 事务管理