Android解析xml也有自己的方法,使用Pull的方式解析,利用xmlPullParser接口进行解析,同样首先也是需要一个Message的java-bean对象来封装对象的数据
public class MainActivity extends Activity {
Message sms;
List<Message> smsList;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void click(View v){
//获取到src下面的文件
InputStream is = getClassLoader().getResourceAsStream("sms.xml");
//拿到pull解析对象
XmlPullParser xp = Xml.newPullParser();
//初始化
try {
xp.setInput(is, "utf-8");
//获取当前节点的事件类型,通过判断类型的判断,来知道当前是什么节点
//START_DOCUMENT = 0;END_DOCUMENT = 1;START_TAG = 2; END_TAG = 3;Text=4
int type1 = xp.getEventType();
while(type1 != XmlPullParser.END_DOCUMENT){
switch(type1){
case XmlPullParser.START_TAG:
//xp.getName()获取当前节点的名字
if("Message".equals(xp.getName())){
//创建Message集合对象用于存放message的对象
}
else if("sms".equals(xp.getName())){
//创建信息的javabean
smsList = new ArrayList<Message>();
sms = new Message();
}
else if("body".equals(xp.getName())){
//创建信息的javabean
//获取当前节点的下一个节点的文本,并把指针移动到当前节点的结束节点
String body = xp.nextText();
sms.setBody(body);
}
else if("date".equals(xp.getName())){
//创建信息的javabean
String date = xp.nextText();
sms.setBody(date);
}
else if("address".equals(xp.getName())){
//创建信息的javabean
String address = xp.nextText();
sms.setBody(address);
}
else if("type".equals(xp.getName())){
//创建信息的javabean
String type = xp.nextText();
sms.setBody(type);
}
break;
case XmlPullParser.END_TAG:
if("Message".equals(xp.getName())){
smsList.add(sms);
}
break;
}
xp.nextText();
}
for(Message sms:smsList){
sms.toString();
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
activity_main.xml
<RelativeLayout xmlns: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" >
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="click"
android:text="点击 />
</RelativeLayout>