主要的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
解析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