我在写一个RSS阅读器写到解析xml文件这里的时候。只要运行到这里。。就会报错。。程序直接运行到catch里面了,运行完就报错。没有运行try里面的内容,不知道什么原因。。
请各位大哥们帮忙看看。感激不尽。。
private List<News> getRSS(String path){
Log.d(TAG, "getRSS is OK");
List<News> data = new ArrayList<News>();
URL url = null;
try{
url = new URL(path); /*Make SAXparser Object*/
SAXParserFactory spf = SAXParserFactory.newInstance();
SAXParser sp = spf.newSAXParser(); /*Make XMLReader Object*/
XMLReader xr = sp.getXMLReader(); /*Make MyHandler to XMLReader*/
MyHandler myHandler = new MyHandler();
xr.setContentHandler(myHandler); /*Loading XML*/
xr.parse(new InputSource(url.openStream())); /*Get xml title and content*/
data = myHandler.getParsedData();
title = myHandler.getRssTitle();
}catch(Exception e){ /*when error call back result to activity*/
Intent intent = new Intent();
Bundle bundle = new Bundle();
bundle.putString("error", ""+e);
intent.putExtras(bundle);
SaxActivity.this.setResult(99, intent);
SaxActivity.this.finish();
}
return data;
}
请各位大哥们帮忙看看。感激不尽。。
private List<News> getRSS(String path){
Log.d(TAG, "getRSS is OK");
List<News> data = new ArrayList<News>();
URL url = null;
try{
url = new URL(path); /*Make SAXparser Object*/
SAXParserFactory spf = SAXParserFactory.newInstance();
SAXParser sp = spf.newSAXParser(); /*Make XMLReader Object*/
XMLReader xr = sp.getXMLReader(); /*Make MyHandler to XMLReader*/
MyHandler myHandler = new MyHandler();
xr.setContentHandler(myHandler); /*Loading XML*/
xr.parse(new InputSource(url.openStream())); /*Get xml title and content*/
data = myHandler.getParsedData();
title = myHandler.getRssTitle();
}catch(Exception e){ /*when error call back result to activity*/
Intent intent = new Intent();
Bundle bundle = new Bundle();
bundle.putString("error", ""+e);
intent.putExtras(bundle);
SaxActivity.this.setResult(99, intent);
SaxActivity.this.finish();
}
return data;
}
解决方案 »
- 问下:目前安卓2.0和4.0开发有什么区别吗?
- android应用关于新浪微博授权登陆
- Spinner取值问题
- overlay和surfaceflinger的 w_stride 和 w怎么理解阿?
- android的固定拨号(Fixed dialing Numbers)怎么实现的??
- SAXReader解析xml抛异常
- android客户端通过webservice获取数据库图片
- 关于Android按键传递的问题。
- ListView中添加了HeaderView和FooterView后,onScroll参数不合意图
- 请问使用webView的APP问题
- service 怎样调用activity
- android2.2 判断音频文件的问题
不知道哪个为空啊。。只是运行到URL url = null;这里就报错了。。try里面的根本没有运行啊。。
URL url = null;怎么会挂呢,那你不初始化试试
URL url;
不过和这个没关系啊
package com.huawei.test;public class News {
private String _title = ""; // The news title
private String _link = ""; // The news link
private String _desc = ""; // The news desc
private String _data = ""; // The news data
public String get_title() {
return _title;
}
public void set_title(String title) {
_title = title;
}
public String get_link() {
return _link;
}
public void set_link(String link) {
_link = link;
}
public String get_desc() {
return _desc;
}
public void set_desc(String desc) {
_desc = desc;
}
public String get_data() {
return _data;
}
public void set_data(String data) {
_data = data;
}
}
然后就可以了
TAG改成一个字符串,你这是变量,根本就没有。
import android.net.Uri;
import android.os.Bundle;
import android.view.Window;
import android.view.WindowManager;
import android.widget.MediaController;
import android.widget.VideoView;
UrlConnection.java网络连接,得到流
public class UrlConnection{
/**
* 所有的连接都可以连接
* @param urll
* @return
* @throws Exception
*/
public InputStream contactParse(String urll)throws Exception
{
URL url = new URL(urll);
InputStream is = getDocument(url);
return is;
} /**
* 从连接中得到的流数据
* @param url
* @return
*/
public InputStream getDocument(URL url)
{
InputStream inStream1 = null;
try {
//打开连接
URLConnection urlConnection = url.openConnection();
HttpURLConnection httpConnection = (HttpURLConnection)urlConnection;
httpConnection.setRequestProperty("Content-type", "text/html;charset=UTF-8");
httpConnection.setDoOutput(true);
httpConnection.setRequestMethod("GET");
httpConnection.setUseCaches(false); int requestCode = httpConnection.getResponseCode();
if(requestCode ==200)
{
//请求成功返回
inStream1= httpConnection.getInputStream();
} else {
}
} catch (IOException e) {
e.printStackTrace();
}
return inStream1;
}
}
Parse.java//从上面获取的流中,解析XMLpublic class Parse {
public static Map<String, Object> readXml(InputStream inStream)
throws Exception { Map<String, Object> map = null; List<News> listNews = null; // 实体对象
News news = null; // 得到XmlPullParser这个对象
XmlPullParser parser = Xml.newPullParser(); // 将InputSteam流以UTF-8的形式存放在XmlPullParser中
parser.setInput(inStream, "UTF-8"); // 返回一个事件码
int eventCode = parser.getEventType(); // 依次循环XML文件中的节点
while (eventCode != XmlPullParser.END_DOCUMENT) {
switch (eventCode) {
case XmlPullParser.START_DOCUMENT:// 文档的开始
map = new HashMap<String, Object>();
break;
case XmlPullParser.START_TAG:// 节点的开始
//这里判断每个Javabean的开始,我没写
if("title".equals(parser.getName()))
{
news.getTitle(parser.nextText());
}
if("link".equals(parser.getName()))
{
news.getLink(parser.nextText());
}
if("desc".equals(parser.getName()))
{
news.getDesc(parser.nextText());
}
if("data".equals(parser.getName()))
{
news.getData(parser.nextText());
}
break;
case XmlPullParser.END_TAG:// 节点结束
//当每个javabean结束后,就把news放入集合中
break;
}
eventCode = parser.next();// 然后改变事件码
}
return map;
}
}