博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
《android用SAX解析xml》
阅读量:6258 次
发布时间:2019-06-22

本文共 4615 字,大约阅读时间需要 15 分钟。

hot3.png

主要的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 < attr.getLength(); 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

 

配置需要列表显示的文件

1、申明列表文件array.xml

  

2、数据显示文件user.xml

   
  

注册Activity的文件AndroidManifest.xml

    
    
        
            
                
                
            
                
    

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

    
        
迈克儿.乔丹
        
17
        
        
周杰伦
        
18
    

转载于:https://my.oschina.net/u/1269023/blog/214944

你可能感兴趣的文章
spring3.1, hibernate4.1 配置备份,struts2.2.1,sitemesh 2.4.2
查看>>
python字符串格式化输出的方式
查看>>
buffer busy waits等待事件
查看>>
MySQL版本之分:Community Server、Embedded Server、Enterprise Server
查看>>
JVM及遗传算法,转摘牛人牛文
查看>>
C#用DataTable实现Group by数据统计
查看>>
iframe如何刷新的三种解决方案
查看>>
每日英语:Fewer Foreigners Eye US Graduate Science Programs
查看>>
Socket异步通信——使用IAsyncResult
查看>>
宋体、构造函数-浅出C++对象模型——理解构造函数、析构函数执行顺序-by小雨...
查看>>
我眼中的sencha touch(2013网页装在兜里)
查看>>
函数分组学通MongoDB——第三天 细说高级操作
查看>>
Windows程序设计_18_程序加载过程
查看>>
安装内容[Python]第三方库-Scrapy入门使用
查看>>
关闭web.config的继承
查看>>
一键让应用程序适配 iphone5
查看>>
http 长连接和轮询
查看>>
Windows CE 6.0的安装,简单定制和导出SDK--转载
查看>>
在Windows Server 2008 R2上安装Exchange 2013过程中遇到的一些问题
查看>>
Maven POM入门
查看>>