主要的Acivity

packagecom.xml.xml;importjava.io.Serializable;importjava.util.ArrayList;importjava.util.List;importjava.util.Map;importjavax.xml.parsers.SAXParserFactory;importorg.xml.sax.InputSource;importorg.xml.sax.XMLReader;importandroid.os.Bundle;importandroid.app.Activity;importandroid.content.Intent;importandroid.view.View;importandroid.view.View.OnClickListener;importandroid.widget.Button;/***主Activity*@author吕檀溪**/publicclassMainActivityextendsActivity{privateButtonbut;publicstaticList<Map<String,String>>list=newArrayList<Map<String,String>>();@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.main);but=(Button)findViewById(R.id.but);but.setOnClickListener(newButtonClick());}classButtonClickimplementsOnClickListener{@OverridepublicvoidonClick(Viewview){//得到产生SAX的生产工厂SAXParserFactoryfactory=SAXParserFactory.newInstance();try{//得到获取XML的对象XMLReaderreader=factory.newSAXParser().getXMLReader();//绑定读书数据的类reader.setContentHandler(newMySaxRead());//获取需要读取的.xml文件reader.parse(newInputSource(MainActivity.class.getClassLoader().getResourceAsStream("user.xml")));//绑定数据Intentintent=newIntent();intent.putExtra("list",(Serializable)list);intent.setClass(MainActivity.this,ArrayActivity.class);startActivity(intent);}catch(Exceptione){e.printStackTrace();}}}}

解析xml的Acitity

packagecom.xml.xml;importjava.io.File;importjava.util.ArrayList;importjava.util.HashMap;importjava.util.List;importjava.util.Map;importorg.xml.sax.Attributes;importorg.xml.sax.SAXException;importorg.xml.sax.helpers.DefaultHandler;/***读取xml文件的类,继承了DefaultHandler*这里的五个方法都是从DefaultHandler重写的*@author吕檀溪**/publicclassMySaxReadextendsDefaultHandler{privateStringtagName;privateList<Map<String,String>>list=newArrayList<Map<String,String>>();privateStringname;//结束Document的方法,并给MainActivity连的list赋值@OverridepublicvoidendDocument()throwsSAXException{MainActivity.list=this.list;}//结束标签的读取,并给结束标签添加一个标记@OverridepublicvoidendElement(Stringuri,StringlocalName,StringqName)throwsSAXException{tagName=File.separator+localName;}//开始读取内容@OverridepublicvoidstartDocument()throwsSAXException{}//开始读取标签@OverridepublicvoidstartElement(Stringuri,StringlocalName,StringqName,Attributesattr)throwsSAXException{//获取没有前缀的标签名tagName=localName;//判断是否是我们需要的标签if("worker".equals(tagName)){//循环得到标签的属性for(inti=0;i<attr.getLength();i++){System.out.println(attr.getLocalName(i)+"=="+attr.getValue(i));}}}//得到便签的值@Overridepublicvoidcharacters(char[]ch,intstart,intlength)throwsSAXException{if("name".equals(tagName)){name=newString(ch,start,length);}elseif("age".equals(tagName)){//这个步骤很关键,因为这里没做好就会出现空值的现象;这里是先把name的值存在全局变量中//然后在根据age的非空值一起存进map集合Map<String,String>map=newHashMap<String,String>();Stringage=newString(ch,start,length);map.put("name",name);map.put("age",age);list.add(map);}}}

列表显示的Activity

packagecom.xml.xml;importjava.util.List;importjava.util.Map;importandroid.app.ListActivity;importandroid.content.Intent;importandroid.os.Bundle;importandroid.widget.SimpleAdapter;/***做一个列表显示*@author吕檀溪**/publicclassArrayActivityextendsListActivity{@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.array);//得到传过来得到IntentIntentintent=getIntent();//得到在Intent绑定数数据List<Map<String,String>>list=(List<Map<String,String>>)intent.getSerializableExtra("list");//给SimpleAdapter绑定需要显示的数据,以及制定显示的规范SimpleAdapteradapter=newSimpleAdapter(this,list,R.layout.user,newString[]{"name","age"},newint[]{R.id.name,R.id.age});setListAdapter(adapter);}}

主要的布局文件main.xml

<RelativeLayoutxmlns:android="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"><Buttonandroid:id="@+id/but"android:layout_height="wrap_content"android:layout_width="wrap_content"android:text="解析XML"/></RelativeLayout>

配置需要列表显示的文件

1、申明列表文件array.xml

<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"><ListViewandroid:id="@+id/android:list"android:layout_height="wrap_content"android:layout_width="fill_parent"android:drawSelectorOnTop="false"android:scrollbars="vertical"></ListView></LinearLayout>

2、数据显示文件user.xml

<LinearLayoutxmlns:android="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"><TextViewandroid:id="@+id/name"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginLeft="20pt"/><TextViewandroid:id="@+id/age"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginLeft="20pt"/></LinearLayout>

注册Activity的文件AndroidManifest.xml

<?xmlversion="1.0"encoding="utf-8"?><manifestxmlns:android="http://schemas.android.com/apk/res/android"package="com.xml.xml"android:versionCode="1"android:versionName="1.0"><uses-sdkandroid:minSdkVersion="14"android:targetSdkVersion="18"/><applicationandroid:allowBackup="true"android:icon="@drawable/ic_launcher"android:label="@string/app_name"android:theme="@style/AppTheme"><activityandroid:name="com.xml.xml.MainActivity"android:label="@string/app_name"><intent-filter><actionandroid:name="android.intent.action.MAIN"/><categoryandroid:name="android.intent.category.LAUNCHER"/></intent-filter></activity><activityandroid:name="com.xml.xml.ArrayActivity"></activity></application></manifest>

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

<?xmlversion="1.0"encoding="utf-8"?><workers><workerid="001"nameMy="001x"><name>迈克儿.乔丹</name><age>17</age></worker><workerid="002"nameMy="002x"><name>周杰伦</name><age>18</age></worker></workers>

更多相关文章

  1. Android中音频文件的使用
  2. Android播放ogg声音文件
  3. android 通过pull解析xml文件
  4. android studio 文件重命名快捷键
  5. Android之访问下载文件
  6. Unity同步加载Android里的StreamingAssets里的文件

随机推荐

  1. tabcontent中scaleType的使用 图片Drawab
  2. 自学Android(安卓)----- Activity的生命
  3. Android自学笔记之Android常见命令操作及
  4. ASM-使用ASM Bytecode Outline插件查看字
  5. Android Material Design 控件常用的属性
  6. android 调用.net的web Service开发 (KSO
  7. Android程序的目录结构分析——manifests
  8. cocos2d-x学习之旅(四):1.4 使用eclipse
  9. Android中的进程(Process)和线程(Thread)
  10. Android绘制原理之刷新机制