java - Error parsing Xml Rss feed in android -


hi there i'm newbie in android development , i'm following tutrial got errors need , i'm trying make project rss feed apple store" top 10 apps" , parsing android studio project , show in listview .. here's error log

> 09-30 18:04:35.196    1969-1969/com.katarina.ahmed.top10appdownloader > i/timeline﹕ timeline: activity_idle id: android.os.binderproxy@6ae73bc > time:91550625 >  > 09-30 18:04:36.331    1969-1969/com.katarina.ahmed.top10appdownloader > d/viewrootimpl﹕ viewpostimeinputstage action_down >  > 09-30 18:04:36.426    1969-1969/com.katarina.ahmed.top10appdownloader > w/system.err﹕ java.lang.nullpointerexception: attempt invoke > virtual method 'int java.lang.string.length()' on null object > reference >  > 09-30 18:04:36.426    1969-1969/com.katarina.ahmed.top10appdownloader > w/system.err﹕ @ java.io.stringreader.<init>(stringreader.java:47) >  > 09-30 18:04:36.426    1969-1969/com.katarina.ahmed.top10appdownloader > w/system.err﹕ @ > com.katarina.ahmed.top10appdownloader.parseapplications.process(parseapplications.java:37) >  > 09-30 18:04:36.426    1969-1969/com.katarina.ahmed.top10appdownloader > w/system.err﹕ @ > com.katarina.ahmed.top10appdownloader.mainactivity$1.onclick(mainactivity.java:38) >  > 09-30 18:04:36.426    1969-1969/com.katarina.ahmed.top10appdownloader > w/system.err﹕ @ android.view.view.performclick(view.java:5184) >  > 09-30 18:04:36.426    1969-1969/com.katarina.ahmed.top10appdownloader > w/system.err﹕ @ android.view.view$performclick.run(view.java:20910) >  > 09-30 18:04:36.426    1969-1969/com.katarina.ahmed.top10appdownloader > w/system.err﹕ @ android.os.handler.handlecallback(handler.java:739) >  > 09-30 18:04:36.426    1969-1969/com.katarina.ahmed.top10appdownloader > w/system.err﹕ @ android.os.handler.dispatchmessage(handler.java:95) >  > 09-30 18:04:36.426    1969-1969/com.katarina.ahmed.top10appdownloader > w/system.err﹕ @ android.os.looper.loop(looper.java:145) >  > 09-30 18:04:36.426    1969-1969/com.katarina.ahmed.top10appdownloader > w/system.err﹕ @ > android.app.activitythread.main(activitythread.java:5942) >  > 09-30 18:04:36.426    1969-1969/com.katarina.ahmed.top10appdownloader > w/system.err﹕ @ java.lang.reflect.method.invoke(native method) >  > 09-30 18:04:36.426    1969-1969/com.katarina.ahmed.top10appdownloader > w/system.err﹕ @ java.lang.reflect.method.invoke(method.java:372) >  > 09-30 18:04:36.426    1969-1969/com.katarina.ahmed.top10appdownloader > w/system.err﹕ @ > com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:1400) >  > 09-30 18:04:36.426    1969-1969/com.katarina.ahmed.top10appdownloader > w/system.err﹕ @ > com.android.internal.os.zygoteinit.main(zygoteinit.java:1195) >  > 09-30 18:04:36.426    1969-1969/com.katarina.ahmed.top10appdownloader > d/main activity﹕ error parsing file 

the code main :

package com.com.katarina.top10appdownloader; import android.support.v7.app.appcompatactivity; import android.os.bundle; import android.util.log; import android.view.menu; import android.os.asynctask; import android.view.menuitem; import android.view.view; import android.widget.arrayadapter; import android.widget.button; import android.widget.listview; import java.io.ioexception; import java.io.inputstream; import java.io.inputstreamreader; import java.net.httpurlconnection; import java.net.url; import java.util.arraylist;   public class mainactivity extends appcompatactivity {     button btnparse;     listview listapps;     string xmldata;     @override     protected void oncreate(bundle savedinstancestate) {         super.oncreate(savedinstancestate);         setcontentview(r.layout.activity_main);          btnparse=(button) findviewbyid(r.id.btnparse);         listapps=(listview) findviewbyid(r.id.listapps);         btnparse.setonclicklistener(new view.onclicklistener(){              @override             public void onclick(view v) {             parseapplications parse = new parseapplications(xmldata);                  boolean operationstatus=parse.process();                  if(operationstatus)                 {                     arraylist<application> allapps=parse.getapplications();                     arrayadapter<application> adapter=new arrayadapter<application>(mainactivity.this,r.layout.list_item,allapps);                     listapps.setvisibility(listapps.visible);                     listapps.setadapter(adapter);                 }                 else {                     log.d("main activity","error parsing file");                 }              }         });         new downloaddata().execute("http://ax.itunes.apple.com/webobjects/mzstoreservices.woa/ws/rss/topfreeapplications/limit=10/xml");     }      @override     public boolean oncreateoptionsmenu(menu menu) {         // inflate menu; adds items action bar if present.         getmenuinflater().inflate(r.menu.menu_main, menu);         return true;     }      @override     public boolean onoptionsitemselected(menuitem item) {         // handle action bar item clicks here. action bar         // automatically handle clicks on home/up button, long         // specify parent activity in androidmanifest.xml.         int id = item.getitemid();          //noinspection simplifiableifstatement         if (id == r.id.action_settings) {             return true;         }          return super.onoptionsitemselected(item);     }      private class downloaddata extends asynctask<string,void,string>     {         string myxmldata;         protected string doinbackground(string...urls)         {             try {                 myxmldata=downloadxml(urls[0]);             } catch (ioexception e)             {                 return " unable download xml file ";             }             return "";         }         protected void onpostexecute(string result) {             log.d("onpostexecute", myxmldata);             xmldata=myxmldata;         }         private string downloadxml (string theurl) throws ioexception         {             int buffer_size=2000;             inputstream =null;             string xmlcontents ="";             try{                 url url=new url(theurl);                 httpurlconnection conn=(httpurlconnection) url.openconnection();                 conn.setreadtimeout(10000);                 conn.setconnecttimeout(15000);                 conn.setrequestmethod("get");                 conn.setdoinput(true);                 int response=conn.getresponsecode();                 log.d("downloadxml","the response returned is: "+response);                 is=conn.getinputstream();                 inputstreamreader isr= new inputstreamreader(is);                 int charread;                 char[] inputbuffer=new char[buffer_size];                 try {                     while ((charread=isr.read(inputbuffer))>0)                     {                         string readstring=string.copyvalueof(inputbuffer,0,charread);                         xmlcontents+=readstring;                         inputbuffer=new char[buffer_size];                     }                     return xmlcontents;                  } catch (ioexception e){                     e.printstacktrace();                     return  null;                 }              } {                 if (is!=null)                     is.close();             }         }         }     } 

the parsing class :

package com.katarina.top10appdownloader;  import android.util.log;  import org.xmlpull.v1.xmlpullparser; import org.xmlpull.v1.xmlpullparserfactory;  import java.io.stringreader; import java.util.arraylist;  public class parseapplications {     private string data;     private arraylist<application> applications;      public parseapplications(string xmldata) {         data = xmldata;         applications = new arraylist<application>();      }      public arraylist<application> getapplications() {         return applications;     }      public boolean process() {         boolean operationstatus = true;          application currentrecord = null;         boolean inentry = false;         string textvalue = "";         try {              xmlpullparserfactory factory = xmlpullparserfactory.newinstance();             factory.setnamespaceaware(true);              xmlpullparser xpp = factory.newpullparser();             xpp.setinput(new stringreader(this.data));             int eventtype = xpp.geteventtype();             while (eventtype != xmlpullparser.end_document) {                 string tagname = xpp.getname();                  if (eventtype == xmlpullparser.start_tag) {                     if (tagname.equalsignorecase("entry")) {                         inentry = true;                         currentrecord = new application();                     }                 } else if (eventtype == xmlpullparser.text) {                     textvalue = xpp.gettext();                 } else if (eventtype == xmlpullparser.end_tag) {                     if (inentry) {                         if (tagname.equalsignorecase("entry")) {                             applications.add(currentrecord);                             inentry = false;                         }                         if (tagname.equalsignorecase("name")) {                             currentrecord.setname(textvalue);                         } else if (tagname.equalsignorecase("atrist")) {                             currentrecord.setartist(textvalue);                         } else if (tagname.equalsignorecase("releasedate")) {                             currentrecord.setreleasedate(textvalue);                         }                     }                 }                 eventtype=xpp.next();             }          } catch (exception e) {             e.printstacktrace();             operationstatus = false;         }         for(application app:applications)         {             log.d("log","*****************");             log.d("log",app.getname());             log.d("log",app.getartist());             log.d("log",app.getreleasedate());         }         return operationstatus;     } } 

thanks in advance ..


Comments

Popular posts from this blog

1111. appearing after print sequence - php -

java - WARN : org.springframework.web.servlet.PageNotFound - No mapping found for HTTP request with URI [/board/] in DispatcherServlet with name 'appServlet' -

Ruby on Rails, ActiveRecord, Postgres, UTF-8 and ASCII-8BIT encodings -