blogspot.jpでのフィード情報の取得とパース
Android でアクセスをし、フィードをパースして、タイトル、日付、リンク を取得したいです。
ライブドアブログ、FC2のブログなどでは取得できますが、blogspot.jp でのブログで取得が行えません。
try {
Log.d("try直下", "-----");
String mSitetitle = "";
parser.setInput(is, null);
int eventType = parser.getEventType();
Item currentItem = null;
while (eventType != XmlPullParser.END_DOCUMENT && i < 10) {
// Log.d("while直下","-----");
String tag = null;
switch (eventType) {
case XmlPullParser.START_TAG:
tag = parser.getName();
if ((tag.equals("title")) && (currentItem == null)) {
mSitetitle = parser.nextText();//サイト名を取得
Log.d("mSitetitle", mSitetitle);
}
if (tag.equals("item")) {
currentItem = new Item();//Itemクラスのインスタンスを作り、それに値を入れていく
currentItem.setSite(mSitetitle);
} else if (currentItem != null) {
if (tag.equals("title")) {
currentItem.setTitle(parser.nextText());
Log.d("title", parser.nextText());
//} else if (tag.equals("author")) {//サイト名、製作者
//currentItem.setSite((parser.nextText()));
} else if (tag.equals("pubDate")) {//日付 Sat, 31 Oct 2015 13:33:51 +0000
/** RSSフィードの日付フォーマットパターン */
SimpleDateFormat sdf1 = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss Z", Locale.ENGLISH);
Date formatDate = sdf1.parse(parser.nextText()); //Sat, 31 Oct 2015 13:33:51 +0000
Calendar cal = Calendar.getInstance();
cal.setTime(formatDate);//パースした値をカレンダークラスで整形してセット
//タイムゾーン変更
cal.setTimeZone(TimeZone.getTimeZone("GMT+9:00"));
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
String formatted = sdf2.format(cal.getTime());
Log.d("formatted", formatted);
currentItem.setDate((formatted));
} else if (tag.equals("date")) {//日付別バーション0
//2016-01-02T20:35:48+09:00
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
Date formatDate = sdf2.parse(parser.nextText()); //Sat, 31 Oct 2015 13:33:51 +0000
Calendar cal = Calendar.getInstance();
cal.setTime(formatDate);//パースした値をカレンダークラスで整形してセット
String formatted = sdf2.format(cal.getTime());
currentItem.setDate(formatted);
//currentItem.setDate((parser.nextText()));
} else if (tag.equals("link")) {//リンク
Log.d("link", parser.nextText());
currentItem.setLink((parser.nextText()));
}
//else if (tag.contains("link")) {//リンク
// Log.d("link", parser.nextText());
// currentItem.setLink((parser.nextText()));
//}
//else if (tag.equals("description")) {
// currentItem.setDescription(parser.nextText());
//}
}
break;
case XmlPullParser.END_TAG:
tag = parser.getName();
if (tag.equals("item")) {
//mAdapter.add(currentItem);
items.add(currentItem);//上は mAdapterに収納していたが、ここでは配列に収納する
i++;//i カウントアップ
Log.d("i", String.valueOf(i));
}
break;
}
eventType = parser.next();
}//while_END
}