RssParserTask.java :  » Widget » kivajapan-mobile » jp » kivajapan » rssreader » Android Open Source

Android Open Source » Widget » kivajapan mobile 
kivajapan mobile » jp » kivajapan » rssreader » RssParserTask.java
package jp.kivajapan.rssreader;

import java.io.IOException;
import java.io.InputStream;
import java.io.StringReader;
import java.net.URL;

import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;

import android.app.ProgressDialog;
import android.os.AsyncTask;
import android.util.Xml;

public class RssParserTask extends AsyncTask<String, Integer, RssListAdapter> {
  private RssReaderActivity mActivity;
  private RssListAdapter mAdapter;
  private ProgressDialog mProgressDialog;

  // 
  public RssParserTask(RssReaderActivity activity, RssListAdapter adapter) {
    mActivity = activity;
    mAdapter = adapter;
  }

  // 
  @Override
  protected void onPreExecute() {
    // 
//    mProgressDialog = new ProgressDialog(mActivity);
////    mProgressDialog.setTitle(R.string.update);
//    mProgressDialog.setMessage("Now loding...");
//    mProgressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
//    mProgressDialog.show();
  }

  // 
  @Override
  protected RssListAdapter doInBackground(String... params) {
    RssListAdapter result = null;
    try {
      // HTTPInputStream
      URL url = new URL(params[0]);
      InputStream is = url.openConnection().getInputStream();
      result = parseXml(is);
    } catch (Exception e) {
      e.printStackTrace();
    }
    // onPostExecute
    return result;
  }

  // 
  @Override
  protected void onPostExecute(RssListAdapter result) {
//    mProgressDialog.dismiss();
    mActivity.setListAdapter(result);
  }

  // XML
  public RssListAdapter parseXml(InputStream is) throws IOException, XmlPullParserException {
    XmlPullParser parser = Xml.newPullParser();
    //parser.setProperty(XmlPullParser.FEATURE_VALIDATION , true);//
    try {
//      parser.setInput(is, null);
      // Kiva JapanUTF-8(0x3E)not well-formed
      // ISO-8859-1getBytesUTF-8
      parser.setInput(is, "ISO-8859-1");
      int eventType = parser.getEventType();
      Item currentItem = null;
      while (eventType != XmlPullParser.END_DOCUMENT) {
        String tag = null;
        switch (eventType) {
          case XmlPullParser.START_TAG:
            tag = parser.getName();
//            if (tag.equals("item")) {
            if (tag.equals("entry")) {
              currentItem = new Item();
            } else if (currentItem != null) {
              if (tag.equals("title")) {
//                currentItem.setTitle(parser.nextText());
                // ISO-8859-1getBytesUTF-8
                String str = new String(parser.nextText().getBytes("ISO-8859-1"),"UTF-8");
                currentItem.setTitle(str);
              } else if (tag.equals("description")) {
                currentItem.setDescription(parser.nextText());
              } else if (tag.equals("summary")) {
                // ISO-8859-1getBytesUTF-8
                String str = new String(parser.nextText().getBytes("ISO-8859-1"),"UTF-8");
                currentItem.setSummary(str);
              } else if (tag.equals("name")) {
                // ISO-8859-1getBytesUTF-8
                String str = new String(parser.nextText().getBytes("ISO-8859-1"),"UTF-8");
                currentItem.setAuthor(str);
              } else if (tag.equals("content")) {
                // ISO-8859-1getBytesUTF-8
                String str = new String(parser.nextText().getBytes("ISO-8859-1"),"UTF-8");
                currentItem.setContent(str);
                
                // imgURL
                // html
//                XmlPullParser parser2 = Xml.newPullParser();
//                parser2.setInput(new StringReader(str));
//                int eventType2 = parser2.getEventType();
//                while (eventType2 != XmlPullParser.END_DOCUMENT) {
//                  String tag2 = null;
//                  switch (eventType2) {
//                    case XmlPullParser.START_TAG:
//                      tag2 = parser2.getName();
//                      if (tag2.equals("img")) {
//                        String src = parser2.getAttributeValue(null,"src");
//                        currentItem.setImage(src);
//                      }
//                  }
//                  eventType2 = parser2.next();
//                }
              }
            }
            break;
          case XmlPullParser.END_TAG:
            tag = parser.getName();
//            if (tag.equals("item")) {
            if (tag.equals("entry")) {
              mAdapter.add(currentItem);
            }
            break;
        }
        eventType = parser.next();
      }
    } catch (Exception e) {
      e.printStackTrace();
    }
    return mAdapter;
  }

}
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.