1.为了快速演示一下解析xml文件,我们先新建一个students.xml文件,把它放到Tomcat的root文件夹下,其内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<students>
<student sid="1">
<sname>大一</sname>
<ssex>女</ssex>
</student>
<student sid="2">
<sname>小二</sname>
<ssex>男</ssex>
</student>
<student sid="3">
<sname>张三</sname>
<ssex>男</ssex>
</student>
</students>
2.新建一个安卓项目
xml布局中写一个按钮
java文件中的代码如下:
package com.example.cookie.android0726parsexml;
import android.app.ProgressDialog;
import android.os.AsyncTask;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.util.Xml;
import android.view.View;
import com.alibaba.fastjson.JSON;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.List;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void getXMLByNet(View view){
new MyTask().execute();
}
class MyTask extends AsyncTask {
@Override
protected Object doInBackground(Object[] params) {
//获取网络xml数据
String path="http://193.168.4.232:8080/students.xml";
try {
URL url= new URL(path);
HttpURLConnection connection= (HttpURLConnection) url.openConnection();
//设置请求方式
connection.setRequestMethod("GET");
//设置请求超时的时间
connection.setConnectTimeout(5000);
//获取结果码
int code=connection.getResponseCode();
if (code==200){
//获取数据
InputStream is=connection.getInputStream();
// int len=0;
// byte[] buf=new byte[1024];
// StringBuffer stringBuffer=new StringBuffer();
// while((len=is.read(buf))!=-1){
// String s=new String(buf,0,len);
// stringBuffer.append(s);
// }
// Log.i("test",stringBuffer.toString());
//2.解析XML(PULL)
XmlPullParser pullParser=Xml.newPullParser();
pullParser.setInput(is,"UTF-8");
//解析的标签类型
int type=pullParser.getEventType();
// Log.i("test",type+"type");
while(type!=XmlPullParser.END_DOCUMENT){
switch (type) {
case XmlPullParser.START_TAG:
//获取开始标签的名字
String startTagName=pullParser.getName();
if ("student".equals(startTagName)){
//获取属性的ID值
String sid=pullParser.getAttributeValue(0);
Log.i("text"," "+ sid);
}else if("sname".equals(startTagName)){
String sname=pullParser.nextText();
Log.i("text"," "+ sname);
}else if("ssex".equals(startTagName)){
String ssex=pullParser.nextText();
Log.i("text"," "+ ssex);
}
break;
case XmlPullParser.END_TAG:
break;
}
//细节
type=pullParser.next();
}
is.close();
}
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (XmlPullParserException e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(Object o) {
super.onPostExecute(o);
}
}
}