package jacky.xmlparser;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.widget.TextView;
import java.io.InputStream;
import java.util.List;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
try {
TextView tv_sms= (TextView) findViewById(R.id.tv_sms);
//通过上下文获取资产管理者
InputStream inputStream=getAssets().open("sms.xml");
//调用我们定义的xml业务方法
List<Sms> smss= SmsParser.parserXml(inputStream);
//遍历List,组拼显示内容
StringBuffer sb=new StringBuffer();
for (Sms sms:smss){
sb.append(sms.toString());
}
tv_sms.setText(sb);
} catch (Exception e) {
e.printStackTrace();
}
}
}
package jacky.xmlparser;
/**
* 作者:Jacky
* 邮箱:550997728@qq.com
* 时间:2016/1/28 20:29
*/
public class Sms {
private String address;
private String body;
private String data;
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String getBody() {
return body;
}
public void setBody(String body) {
this.body = body;
}
public String getData() {
return data;
}
public void setData(String data) {
this.data = data;
}
@Override
public String toString() {
return "SmsParser{" +
"address='" + address + '\'' +
", body='" + body + '\'' +
", data='" + data + '\'' +
'}';
}
}
package jacky.xmlparser;
import android.util.Xml;
import org.xmlpull.v1.XmlPullParser;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
/**
* 作者:Jacky
* 邮箱:550997728@qq.com
* 时间:2016/1/28 20:29
*/
public class SmsParser {
//定义全局变量
private static Sms sms;
private static List<Sms> smss;
/**
* 服务器以流的形式把数据返回
*
* @return
*/
public static List<Sms> parserXml(InputStream in) {
try {
//获取XmlPullParser解析实例
XmlPullParser parser = Xml.newPullParser();
//设置XmlPullParser参数
parser.setInput(in, "utf-8");
//获取事件类型
int type = parser.getEventType();
while (type != XmlPullParser.END_DOCUMENT) {
switch (type) {
case XmlPullParser.START_TAG://解析开始标签
if ("smss".equals(parser.getName())){
//创建一个集合对象
smss = new ArrayList<Sms>();
}else if ("sms".equals(parser.getName())){
sms = new Sms();
}else if ("address".equals(parser.getName())){
//获取address标签间的数据
String address=parser.nextText();
sms.setAddress(address);
}else if ("body".equals(parser.getName())){
//获取body标签间的数据
String body=parser.nextText();
sms.setBody(body);
}else if ("data".equals(parser.getName())){
//获取data标签间的数据
String data=parser.nextText();
sms.setData(data);
}
break;
case XmlPullParser.END_TAG://解析结束标志
//判断要解析的结束标签
if ("sms".equals(parser.getName())){
//将解析到的sms组数据放到List中
smss.add(sms);
}
break;
}
type=parser.next();
}
} catch (Exception e) {
e.printStackTrace();
}
return smss;
}
}