【Android基礎知識】網路獲取Xml檔案並解析
阿新 • • 發佈:2019-02-17
從伺服器獲取xml內容並解析
girls.xml
xml解析類 Xmlparse.java<?xml version="1.0" encoding="utf-8"?> <girls> <girl> <name>tian</name> <age>12</age> <school>tianting</school> </girl> <girl> <name>di</name> <age>12</age> <school>龐各莊</school> </girl> </girls>
public class XmlParse extends Thread { String url; public XmlParse(String url){ this.url = url; } @Override public void run() { try { //獲取xml並使用pull方式解析 URL httpUrl = new URL(url); HttpURLConnection connection = (HttpURLConnection) httpUrl.openConnection(); connection.setReadTimeout(3000); connection.setRequestMethod("GET"); InputStream in = connection.getInputStream(); XmlPullParserFactory factory = XmlPullParserFactory.newInstance(); XmlPullParser parser = factory.newPullParser();
//讀取xml內容,以UTF-8的格式
parser.setInput(in,"UTF-8");
int eventType = parser.getEventType();
List<Girls> girls = new ArrayList<Girls>();
Girls girl = null;
//如果沒有到文件的結尾就繼續解析
while(eventType != XmlPullParser.END_DOCUMENT){
//獲取標籤名字 String data = parser.getName(); switch (eventType) {
//開始標籤
case XmlPullParser.START_TAG:
if("girl".equals(data)){
girl = new Girls();
}
if("name".equals(data)){
girl.setName(parser.nextText());
}
if("age".equals(data)){
girl.setAge(Integer.parseInt(parser.nextText()));
}
if("school".equals(data)){
girl.setSchool(parser.nextText());
}
break;
//結束標籤
case XmlPullParser.END_TAG:
if("girl".equals(data) && girl!= null){
girls.add(girl);
}
break;
default:
break;
}
//手動觸發事件
eventType = parser.next();
}
Log.i("meng.li","size = "+girls.size());
for(Girls g: girls){
Log.i("meng.li","----"+g.toString()+"----");
}
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (XmlPullParserException e) {
e.printStackTrace();
}
}
}
呼叫類 MainActivity.java
public class MainActivity extends Activity {
private ListView listView;
private JsonAdapter adapter;
private Handler handler = new Handler();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
String url2 = "http://192.168.199.126:8080/Server/girls.xml";
new XmlParse(url2).start();
}
}