此文,仅做为个人学习Android,记录成长以及方便复习!
1.通过Myeclipse搭建一个服务器环境,存放一个XML文件
2.访问地址:http://192.168.0.109:8080/JsonDemo/Text.xml
内容如下:

接下来开始正真的表演了!
创建一个类,存放每个<penson>的内容
penson.xml
package com.rui.xmldemo;
/**
* Created by qqazl001 on 2018/4/24.
*/
public class Penson {
private String name;
private String age;
private String mian;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public String getMian() {
return mian;
}
public void setMian(String mian) {
this.mian = mian;
}
@Override
public String toString() {
return "Penson{" +
"name='" + name + '\'' +
", age='" + age + '\'' +
", mian='" + mian + '\'' +
'}';
}
}
创建一个类继承线程,变身牛逼的线程类
通过XmlPullParser解析XML内容并显示在TextView
package com.rui.xmldemo;
import android.os.Handler;
import android.widget.TextView;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
import org.xmlpull.v1.XmlPullParserFactory;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
/**
* Created by qqazl001 on 2018/4/25.
*/
public class XmlFromUrl extends Thread{
private String url;
private Handler handler;
private TextView textView;
public XmlFromUrl(String url,Handler handler,TextView textView){
this.url = url;
this.handler = handler;
this.textView = textView;
}
@Override
public void run() {
super.run();
try {
//解析URL为输入流
URL httpUrl = new URL(url);
HttpURLConnection conn = (HttpURLConnection)httpUrl.openConnection();
conn.setRequestMethod("GET");
conn.setReadTimeout(5000);
InputStream is = conn.getInputStream();
//pull解析基于事件驱动
//获取工程对象
XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
//实例化工厂对象
XmlPullParser parser = factory.newPullParser();
//添加输入流,并设置编码
parser.setInput(is,"UTF-8");
//获取事件类型
int event = parser.getEventType();
//设置集合存放<penson>标签下的penson
final List<Penson> list = new ArrayList<Penson>();
Penson penson = null;
//根据事件类型处理
//文档结束位置END_DOCUMENT
while(event!=XmlPullParser.END_DOCUMENT){
//获取标签名
String data = parser.getName();
//根据事件类型判断处理
switch(event){
case XmlPullParser.START_TAG:
//如果是起始标签<penson>则实例化
if("penson".equals(data)){
penson = new Penson();
}
//如果是<penson>下的标签则赋值
if("name".equals(data)){
penson.setName(parser.nextText());
}
if("age".equals(data)){
penson.setAge(parser.nextText());
}
if("main".equals(data)){
penson.setMian(parser.nextText());
}
break;
case XmlPullParser.END_TAG:
//遇到结束标签则把penson添加到list
if("penson".equals(data)){
list.add(penson);
}
break;
}
//开始下一次循环
event = parser.next();
}
//list内容显示到文本
handler.post(new Runnable() {
@Override
public void run() {
textView.setText(list.toString());
}
});
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (XmlPullParserException e) {
e.printStackTrace();
}
}
}
最后当然得到Maintivity.java 去调用我们的线程类才能功德圆满了
package com.rui.xmldemo;
import android.os.Handler;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
private TextView tv;
private Handler handler = new Handler();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv = findViewById(R.id.tv1);
String url = "http://192.168.0.109:8080/JsonDemo/Text.xml";
XmlFromUrl xmlFromUrl = new XmlFromUrl(url,handler,tv);
xmlFromUrl.start();
}
}

396

被折叠的 条评论
为什么被折叠?



