您的位置:首页 > 理论基础 > 计算机网络

网络获取xml文件,pull解析listVist展示

2016-07-27 14:03 375 查看
webView 展示

package com.example.xmlpull;

import android.os.Bundle;

import android.app.Activity;

import android.view.Menu;

import android.webkit.WebSettings;

import android.webkit.WebView;

import android.webkit.WebViewClient;

public class ShowActivity extends Activity {

private WebView wb;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_show);

wb=(WebView)findViewById(R.id.wb);

String url=getIntent().getStringExtra("url");

WebSettings set = wb.getSettings();

set.setJavaScriptEnabled(true);

wb.loadUrl(url);

wb.setWebViewClient(new WebViewClient(){

@Override

public boolean shouldOverrideUrlLoading(WebView view, String url) {

view.loadUrl(url);

return true;

}

});

}

@Override

public boolean onCreateOptionsMenu(Menu menu) {

// Inflate the menu; this adds items to the action bar if it is present.

getMenuInflater().inflate(R.menu.show, menu);

return true;

}

}

工具包代码

package utils;

import java.io.BufferedReader;

import java.io.ByteArrayInputStream;

import java.io.IOException;

import java.io.InputStream;

import java.io.InputStreamReader;

import java.net.HttpURLConnection;

import java.net.URL;

import java.util.ArrayList;

import java.util.List;

import org.xmlpull.v1.XmlPullParser;

import org.xmlpull.v1.XmlPullParserException;

import bean.News;

import android.content.res.XmlResourceParser;

import android.util.Xml;

public class HttpUtils {

public static String qudu(String path) throws Exception{

//建立一个URL对象

URL url = new URL(path);

//得到打开的链接对象

HttpURLConnection conn = (HttpURLConnection)url.openConnection();

//设置请求超时与请求方式

conn.setReadTimeout(5*1000);

conn.setRequestMethod("GET");

//从链接中获取一个输入流对象

BufferedReader bf=new BufferedReader(new InputStreamReader(conn.getInputStream()));

StringBuffer sb=new StringBuffer();

String ss;

while((ss=bf.readLine())!=null){

sb.append(ss);

}

return sb.toString();

}

public static List<News> paerss(String str) throws Exception{

List<News> list=new ArrayList<News>();

XmlPullParser pull=Xml.newPullParser();

ByteArrayInputStream in=new ByteArrayInputStream(str.getBytes());

pull.setInput(in,"utf-8");

News n=null;

int type = pull.getEventType();

while(type!=XmlResourceParser.END_DOCUMENT){

String name=pull.getName();

switch (type) {

case XmlResourceParser.START_DOCUMENT:

break;

case XmlResourceParser.START_TAG:

if("item".equalsIgnoreCase(name)){

n=new News();

}else if("title".equalsIgnoreCase(name)){

n.setTitle(pull.nextText());

}else if("link".equalsIgnoreCase(name)){

n.setLink(pull.nextText());

}else if("copyright".equalsIgnoreCase(name)){

n.setCopyright(pull.nextText());

}else if("pubDate".equalsIgnoreCase(name)){

n.setPubDate(pull.nextText());

}

break;

case XmlResourceParser.END_TAG:

if("item".equalsIgnoreCase(name)){

list.add(n);

n=null;

}

break;

default:

break;

}

type=pull.next();

}

return list;

}

}

主Activity页面

package com.example.xmlpull;

import java.util.List;

import utils.HttpUtils;

import bean.News;

import android.os.AsyncTask;

import android.os.Bundle;

import android.app.Activity;

import android.content.Intent;

import android.util.Log;

import android.view.Menu;

import android.view.View;

import android.widget.AdapterView;

import android.widget.ListView;

import android.widget.AdapterView.OnItemClickListener;

public class MainActivity extends Activity {

private List<News> list;

private ListView lv;

private String url="http://www.sciencenet.cn/xml/iphoneInterface.aspx?type=news&nums=20&pass=";

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

lv=(ListView)findViewById(R.id.lv);

new AsyncTask<String, Void, List<News>>(){

@Override

protected List<News> doInBackground(String... params) {

try {

String s = HttpUtils.qudu(params[0]);

Log.i("999", s);

list=HttpUtils.paerss(s);

Log.i("0000", list.size()+"");

return list;

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

return list;

}

protected void onPostExecute(java.util.List<News> result) {

lv.setAdapter(new MyAdapter(MainActivity.this,result));

};

}.execute(url);

lv.setOnItemClickListener(new OnItemClickListener() {

@Override

public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

Intent intent=new Intent(MainActivity.this, ShowActivity.class);

intent.putExtra("url", list.get(position).getLink());

startActivity(intent);

}

});

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  xml webview 网络 常用