package ca.uwccf.prayerbox.Data; import java.io.StringReader; import java.util.ArrayList; import java.util.HashMap; import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlPullParserFactory; import android.text.Html; public class PrayerParser { private XmlPullParserFactory factory; private String m_content; public PrayerParser(String content) { m_content = content; try { factory = XmlPullParserFactory.newInstance(); factory.setNamespaceAware(true); } catch (Exception e) { e.printStackTrace(); } } public HashMap<String, String> parseLogin() { try { XmlPullParser parser = null; parser = factory.newPullParser(); parser.setInput(new StringReader(m_content)); int eventType = 0; HashMap<String, String> accountInfo = new HashMap<String, String>(); eventType = parser.getEventType(); while (eventType != XmlPullParser.END_DOCUMENT) { switch (eventType) { // at start of document: START_DOCUMENT // at start of a tag: START_TAG case XmlPullParser.START_TAG: // get tag name String tagName = parser.getName(); if (tagName.equalsIgnoreCase("error")) { accountInfo.put("error", parser.nextText()); } if (tagName.equalsIgnoreCase("user")) { accountInfo.put("user", parser.nextText()); } if (tagName.equalsIgnoreCase("email")) { accountInfo.put("email", parser.nextText()); } if (tagName.equalsIgnoreCase("displayname")) { accountInfo.put("displayname", parser.nextText()); } if (tagName.equalsIgnoreCase("session_id")) { accountInfo.put("session_id", parser.nextText()); } } eventType = parser.next(); } return accountInfo; } catch (Exception e) { e.printStackTrace(); return null; } } public ArrayList<Prayer> parsePrayerList() { try { XmlPullParser parser = null; parser = factory.newPullParser(); parser.setInput(new StringReader(m_content)); ArrayList<Prayer> prayer_list = new ArrayList<Prayer>(); int eventType = 0; eventType = parser.getEventType(); Prayer prayer = null; while (eventType != XmlPullParser.END_DOCUMENT) { switch (eventType) { // at start of document: START_DOCUMENT // at start of a tag: START_TAG case XmlPullParser.START_TAG: // get tag name String tagName = parser.getName(); // if <study>, get attribute: 'id' if (tagName.equalsIgnoreCase("prayer")) { prayer = new Prayer(); break; } else if (tagName.equalsIgnoreCase("subject")) { prayer.subject = parser.nextText(); } else if(tagName.equalsIgnoreCase("isStarred")) { if(parser.nextText().equalsIgnoreCase("true")){ prayer.isStarred = true; }else { prayer.isStarred = false; } } else if (tagName.equalsIgnoreCase("request")) { prayer.request = Html.fromHtml(parser.nextText()) .toString(); } else if (tagName.equalsIgnoreCase("name")) { prayer.author = parser.nextText(); } else if (tagName.equalsIgnoreCase("prayer_id")) { prayer.prayer_id = parser.nextText(); } else if (tagName.equalsIgnoreCase("date")) { prayer.date = parser.nextText(); } break; case XmlPullParser.END_TAG: if (parser.getName().equalsIgnoreCase("prayer")) { prayer_list.add(prayer); prayer = null; } } eventType = parser.next(); } return prayer_list; } catch (Exception e) { e.printStackTrace(); return null; } } }