1、首先,我将一个Message.xml文件复制粘贴到eclipse的asserts文件夹`
<?xml version="1.0" encoding="utf-8"?>
<root>
<msg id="1">
<address>10080</address>
<body>abb0</body>
<date>20180</date>
</msg>
<msg id="2">
<address>10081</address>
<body>abb1</body>
<date>20181</date>
</msg>
<msg id="3">
<address>10082</address>
<body>abb2</body>
<date>20182</date>
</msg>
</root>
2、然后写了一个Message类
public class Message {
private String address;
private String body;
private String date;
private String id;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
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 getDate() {
return date;
}
public void setDate(String date) {
this.date = date;
}
@Override
public String toString() {
return "Message [address=" + address + ", body=" + body + ", date="
+ date + ", id=" + id + "]";
}
}
3、再写一个用于解析xml的工具类MessageRelease(最易出错),容易出错的地方我都标注在代码中
public class MessageRelease {
public static List<Message> releasexml(InputStream in) throws Exception {
List<Message> msgList = null;
Message msg = null;
XmlPullParser parser = Xml.newPullParser();
parser.setInput(in, "utf-8");
while (parser.getEventType()!=XmlPullParser.END_DOCUMENT) {
if(parser.getName()!=null) {
switch (parser.getEventType()) {
case XmlPullParser.START_TAG:// 解析开始标签
if("root".equals(parser.getName())){
Log.i("tag", "<root>");
msgList = new ArrayList<Message>();
}else if ("msg".equals(parser.getName())) {
Log.i("tag", "<msg>");
msg = new Message();
String id = parser.getAttributeValue(0);
msg.setId(id);
}else if ("address".equals(parser.getName())) {
Log.i("tag", "<address>");
String address = parser.nextText();
msg.setAddress(address);
}else if ("body".equals(parser.getName())) {
Log.i("tag", "<body>");
String body = parser.nextText();
msg.setBody(body);
}else if ("date".equals(parser.getName())) {
Log.i("tag", "<date>");
String date = parser.nextText();
msg.setDate(date);
}
break;
case XmlPullParser.END_TAG:// 解析结束标签
if("msg".equals(parser.getName())){
msgList.add(msg);
msg=null;
Log.i("tag", "************");
}
break;
}
}
parser.next();
}
return msgList;
}
}
4、最后,在MainActivity当中调用工具类的方法
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView tv = (TextView) findViewById(R.id.tv);
try {
InputStream in = getAssets().open("Message.xml");
List<Message> msList = MessageRelease.releasexml(in);
StringBuffer sb = new StringBuffer();
for(Message msg:msList){
sb.append(msg.toString());
}
tv.setText(sb.toString());
} catch (Exception e) {
e.printStackTrace();
}
}
}