package com.example.domexml;
import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
import android.os.Bundle;
import android.app.Activity;
import android.util.Log;
import android.util.Xml;
import android.view.Menu;
public class MainActivity extends Activity {
private String nameString;
//http://v.juhe.cn/boxoffice/rank.php?key=bbc3eb2734c8449524c3491a7b7f89d5&dtype=xml&area=CN
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
new Thread(new Runnable() {
public void run() {
try {
HttpURLConnection con=(HttpURLConnection) new URL("http://192.168.1.103:8080/Interceptor/exportXml.action").openConnection();
con.setConnectTimeout(5000);
con.setRequestMethod("GET");
con.connect();
XmlPullParser parser=Xml.newPullParser();
try {
parser.setInput(con.getInputStream(), "UTF-8");
int even=parser.getEventType();
while(even!=XmlPullParser.END_DOCUMENT)
{
switch(even)
{
//开始标签
case XmlPullParser.START_DOCUMENT:
Log.e("shengming","shengming");
break;
case XmlPullParser.START_TAG:
//获取标签的内容
if("aa".equals(parser.getName()))
{
//指向下一个标签
nameString=parser.nextText();
// Log.e("name", ""+nameString);
}
//获取标签的属性值
if("aa".equals(parser.getName()))
{
nameString=parser.getAttributeValue(0);
// Log.e("name", ""+nameString);
}
break;
//结束标签
case XmlPullParser.END_TAG:
break;
default:
break;
}
Log.e(parser.getName(),""+nameString);
even=parser.next();
}
} catch (XmlPullParserException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}).start();
}
}
需要注意的是:这种标签会被解析2次。当开始解析xml时,会首先解析xml的生命。接着会对标签进行匹配。
现在一般服务器返回的大多都是json字符串,解析相对容易的多。但是在有的地方使用xml还是比较方便的。例如:我们在做应用升级的
时候最好使用xml来解析,升级相对方便很多。而json主要方便在于对实时的数据返回较为方便。