XMLPuLL解析

package com.bawei.day14_xmlpull;

import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;

import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;

import android.os.Bundle;
import android.app.Activity;
import android.util.Xml;
import android.view.Menu;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;

public class MainActivity extends Activity {

private ListView mStuListView;
private List<Student> stus;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView tv=(TextView) findViewById(R.id.tv);
mStuListView = (ListView) findViewById(R.id.stuList);
try {
//调用方法
parseStudent(getAssets().open("persons.xml"));
if (stus != null && stus.size() > 0) {
ArrayAdapter<Student> adapter = new ArrayAdapter<Student>(this, android.R.layout.simple_list_item_1, stus);
mStuListView.setAdapter(adapter);
}

} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}

private List<Student> parseStudent(InputStream is) {
stus = new ArrayList<Student>();
//创建pull解析器
XmlPullParser parser = Xml.newPullParser();
try {
//把需要解析的数据添加到解析器中,并设置数据格式
parser.setInput(is, "utf-8");
//通过解析器触发第一次事件,并获取事件类型码
int eventType = parser.getEventType();
//定义用来存储标签名称的变量
String tagName = "";
Student stu = null;
//判断是否解析到文档末尾,没有则循环解析
while (eventType != XmlPullParser.END_DOCUMENT) {
switch (eventType) {
//开始解析文档
case XmlPullParser.START_DOCUMENT:
break;
//开始解析标签
case XmlPullParser.START_TAG:
//得到标签名字
tagName = parser.getName();
//判断正在接戏的元素标签是否是person
if ("person".equals(tagName)) {
stu = new Student();
stu.setId(Integer.valueOf(parser.getAttributeValue(0)));

}
break;
//解析到文本
case XmlPullParser.TEXT:
//得到当前正在解析的文本内容
String text = parser.getText();
if (stu != null) {
//判断正在解析的文本内容是哪个元素节点里的
if ("name".equals(tagName)) {
stu.setName(text);
} else if ("age".equals(tagName)) {
stu.setAge(Integer.parseInt(text));
}
}
break;
//解析到结束标签
case XmlPullParser.END_TAG:
//得到正在解析的元素标签名
tagName = parser.getName();
//得到正在解析的元素标签名是否是person
if ("person".equals(tagName)) {
stus.add(stu);
stu = null;

}

tagName = "";
break;

}
//本次事件处理完毕,进入下一个节点,下一个事件
eventType = parser.next();
}

} catch (XmlPullParserException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{

try {
if(is!=null){
is.close();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}

return stus;
}

}

 
   

 json解析

import com.google.gson.Gson;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.widget.TextView;

public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView textView = (TextView) findViewById(R.id.tv);
try {
InputStream is=getAssets().open("newsList.json");
int length = is.available();
byte[] buffer=new byte[length];
is.read(buffer);
String jsonStr=new String(buffer,0,length);
Gson g=new Gson();
SuperJsonParse sjp=g.fromJson(jsonStr,SuperJsonParse.class);
textView.setText(sjp.toString());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}



}

 
   
posted @ 2016-04-12 21:09  只剩下我自己了  阅读(174)  评论(0编辑  收藏  举报