android - RSS Link Parsing using XMLPull Parser -
i developing application based on rss feed , want parse rss link using xml parser , followed tutorial , implement code using xmlpull parser , when want parse http://feeds.pcworld.com/pcworld/latestnews link , got response correctly , when want parse http://www.pokerlistings.com/feed/news link , parser didn't respond me .. don't know why ?
i spent 1 week problem .. please me .
here code
mainactivity.java
package com.rajeshvijayakumar.xmlpullparser; import java.util.arraylist; import java.util.list; import android.app.activity; import android.app.progressdialog; import android.content.context; import android.os.asynctask; import android.os.bundle; import android.os.handler; import android.view.view; import android.view.viewgroup; import android.widget.adapterview; import android.widget.adapterview.onitemclicklistener; import android.widget.arrayadapter; import android.widget.listview; import android.widget.textview; import com.rajeshvijayakumar.model.rssfeed; import com.rajeshvijayakumar.parser.newsfeedparser; public class mainactivity extends activity implements onitemclicklistener { private listview mrsslistview; private newsfeedparser mnewsfeeder; private list<rssfeed> mrssfeedlist; private rssadapter mrssadap; private static final string topstories ="http://www.pokerlistings.com/feed/blogs"; @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.rss_feed_view); mrsslistview = (listview) findviewbyid(r.id.rss_list_view); mrssfeedlist = new arraylist<rssfeed>(); new dorssfeedtask().execute(topstories); mrsslistview.setonitemclicklistener(this); } private class rssadapter extends arrayadapter<rssfeed> { private list<rssfeed> rssfeedlst; public rssadapter(context context, int textviewresourceid, list<rssfeed> rssfeedlst) { super(context, textviewresourceid, rssfeedlst); this.rssfeedlst = rssfeedlst; } @override public view getview(int position, view convertview, viewgroup parent) { view view = convertview; rssholder rssholder = null; if (convertview == null) { view = view.inflate(mainactivity.this, r.layout.rss_list_item, null); rssholder = new rssholder(); rssholder.rsstitleview = (textview) view.findviewbyid(r.id.rss_title_view); view.settag(rssholder); } else { rssholder = (rssholder) view.gettag(); } rssfeed rssfeed = rssfeedlst.get(position); rssholder.rsstitleview.settext(rssfeed.gettitle()); return view; } } static class rssholder { public textview rsstitleview; } public class dorssfeedtask extends asynctask<string, void, list<rssfeed>> { progressdialog prog; string jsonstr = null; handler innerhandler; @override protected void onpreexecute() { prog = new progressdialog(mainactivity.this); prog.setmessage("loading...."); prog.show(); } @override protected list<rssfeed> doinbackground(string... params) { (string urlval : params) { mnewsfeeder = new newsfeedparser(urlval); } mrssfeedlist = mnewsfeeder.parse(); return mrssfeedlist; } @override protected void onpostexecute(list<rssfeed> result) { prog.dismiss(); runonuithread(new runnable() { @override public void run() { mrssadap = new rssadapter(mainactivity.this, r.layout.rss_list_item, mrssfeedlist); int count = mrssadap.getcount(); if (count != 0 && mrssadap != null) { mrsslistview.setadapter(mrssadap); } } }); } @override protected void onprogressupdate(void... values) { } } @override public void onitemclick(adapterview<?> adapterview, view v, int position, long id) { } } rssfeed.java
package com.rajeshvijayakumar.model; import java.io.serializable; import java.util.date; public class rssfeed implements serializable { private string title; private string link; private string description; private string category; private string pubdate; private string guid; private string feedburneroriglink; public rssfeed() { } public rssfeed(string title, string link, string description, string category, string pubdate, string guid, string feedburneroriglink) { this.title = title; this.link = link; this.description = description; this.category = category; this.pubdate = pubdate; this.guid = guid; this.feedburneroriglink = feedburneroriglink; } public string gettitle() { return title; } public string getlink() { return link; } public string getdescription() { return description; } public string getcategory() { return category; } public string getpubdate() { return pubdate; } public string getguid() { return guid; } public string getfeedburneroriglink() { return feedburneroriglink; } public void settitle(string title) { this.title = title; } public void setlink(string link) { this.link = link; } public void setdescription(string description) { this.description = description; } public void setcategory(string category) { this.category = category; } public void setpubdate(string pubdate) { this.pubdate = pubdate; } public void setguid(string guid) { this.guid = guid; } public void setfeedburneroriglink(string feedburneroriglink) { this.feedburneroriglink = feedburneroriglink; } } newsfeedparser.java
package com.rajeshvijayakumar.parser; import java.io.ioexception; import java.io.inputstream; 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.xmlpullparserfactory; import com.rajeshvijayakumar.model.rssfeed; public class newsfeedparser { private inputstream urlstream; private xmlpullparserfactory factory; private xmlpullparser parser; private list<rssfeed> rssfeedlist; private rssfeed rssfeed; private string urlstring; private string tagname; private string title; private string link; private string description; private string category; private string pubdate; private string guid; private string feedburner; public static final string item = "item"; public static final string channel = "channel"; public static final string title = "title"; public static final string link = "link"; public static final string description = "description"; public static final string category = "category"; public static final string publisheddate = "pubdate"; public static final string guid = "guid"; public static final string feedburneroriglink = "feedburner:origlink"; public newsfeedparser(string urlstring) { this.urlstring = urlstring; } public static inputstream downloadurl(string urlstring) throws ioexception { url url = new url(urlstring); httpurlconnection conn = (httpurlconnection) url.openconnection(); conn.setrequestmethod("post"); conn.setdoinput(true); conn.connect(); inputstream stream = conn.getinputstream(); return stream; } public list<rssfeed> parse() { try { int count = 0; factory = xmlpullparserfactory.newinstance(); parser = factory.newpullparser(); // urlstream = downloadurl(urlstring); url url = new url("http://www.pokerlistings.com/feed/blogs"); parser.setinput(url.openconnection().getinputstream(), "utf_8"); // parser.setinput(urlstream, null); // url url = new url("http://www.rssboard.org/files/sample-rss-2.xml"); // xmlpullparserfactory factory = xmlpullparserfactory.newinstance(); // factory.setnamespaceaware(false); // xmlpullparser xpp = factory.newpullparser(); // xpp.setinput(url.openconnection().getinputstream(), "utf_8"); int eventtype = parser.geteventtype(); boolean done = false; rssfeed = new rssfeed(); rssfeedlist = new arraylist<rssfeed>(); while (eventtype != xmlpullparser.end_document && !done) { tagname = parser.getname(); switch (eventtype) { case xmlpullparser.start_document: break; case xmlpullparser.start_tag: if (tagname.equals(item)) { rssfeed = new rssfeed(); } if (tagname.equals(title)) { title = parser.nexttext().tostring(); } if (tagname.equals(link)) { link = parser.nexttext().tostring(); } if (tagname.equals(description)) { description = parser.nexttext().tostring(); } if (tagname.equals(category)) { category = parser.nexttext().tostring(); } if (tagname.equals(publisheddate)) { pubdate = parser.nexttext().tostring(); } if (tagname.equals(guid)) { guid = parser.nexttext().tostring(); } if (tagname.equals(feedburneroriglink)) { feedburner = parser.nexttext().tostring(); } break; case xmlpullparser.end_tag: system.out.println(">>>>>>> newsfeedparser end tag"); if (tagname.equals(channel)) { done = true; } else if (tagname.equals(item)) { rssfeed = new rssfeed(title, link, description, category, pubdate, guid, feedburner); rssfeedlist.add(rssfeed); } break; } eventtype = parser.nexttoken(); //eventtype = parser.next(); // eventtype++; system.out.println(">>>>>>> newsfeedparser parse method event type in ="+eventtype); } } catch (exception e) { e.printstacktrace(); } return rssfeedlist; } } thanks in advance
Comments
Post a Comment