我在写一个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;
}

解决方案 »

  1.   

    哪个是空啊?url.openStream())?
      

  2.   


    不知道哪个为空啊。。只是运行到URL url = null;这里就报错了。。try里面的根本没有运行啊。。
      

  3.   

    News构造里干什么了?
    URL url = null;怎么会挂呢,那你不初始化试试
    URL url;
    不过和这个没关系啊
      

  4.   

    额,应该和News里面没关系吧。。News就是一个javabean 。。我发来看看。。
    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;
    }
           
           
    }
      

  5.   

    在外面 URL url = new URL();
    然后就可以了
      

  6.   

    额各位是不是没有连上网的原因。。所以。。 程序不会执行try里面的代码
      

  7.   

    我的 onCreate()里面还有这个  list = getRSS(path);  估计是没有执行try里面的代码没有返回list才报空指针错误的。。那么。。没有执行try里面的代码是因为没有网的原因吗?
      

  8.   

       Log.d(TAG, "getRSS is OK");
    TAG改成一个字符串,你这是变量,根本就没有。
      

  9.   

    package com.wxj.mp;import org.xmlpull.v1.XmlPullParser;import android.app.Activity;
    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;
    }
    }
      

  10.   

    我的 onCreate()里面还有这个 list = getRSS(path); 估计是没有执行try里面的代码没有返回list才报空指针错误的。。那么。。没有执行try里面的代码是因为没有网的原因吗?
      

  11.   

    我的 onCreate()里面还有这个 list = getRSS(path); 估计是没有执行try里面的代码没有返回list才报空指针错误的。。那么。。没有执行try里面的代码是因为没有网的原因吗?
      

  12.   

    我的 onCreate()里面还有这个 list = getRSS(path); 估计是没有执行try里面的代码没有返回list才报空指针错误的。。那么。。没有执行try里面的代码是因为没有网的原因吗?
      

  13.   

    What's the meaning of breakpoint?
      

  14.   

    我上面写得代码不是SAX解析,是android里面的PULL解析。
      

  15.   

    呵呵已经解决了。。谢谢大家了是我弄错了代码没问题。。只是我是连上网直接输入网址进行xml解析的。。只是。。输入错了一直输入“www.baidu.com”改成“http://www.baidu.com/”后就可以了麻烦大家了。。谢谢