private void parseNote(XmlPullParser parser, ArrayList<SnapticNote> returnVal) throws XmlPullParserException, IOException { // Create a blank note object SnapticNote note = new SnapticNote(); returnVal.add(note); int eventType = parser.next(); while (eventType != XmlPullParser.END_DOCUMENT) { if (eventType == XmlPullParser.START_TAG) { String startTag = parser.getName(); // one-liners: if (XML_TAG_ID.equals(startTag)) { long nodeId = Long.parseLong(parser.nextText()); note.id = nodeId; parse_trace("Note ID is " + note.id); } else if (XML_TAG_PARENT_ID.equals(startTag)) { long parentId = Long.parseLong(parser.nextText()); note.parentId = parentId; parse_trace("Parent ID is " + note.parentId); } else if (XML_TAG_SOURCE.equals(startTag)) { String source = parser.nextText(); note.source = source; parse_trace("Note source is " + note.source); } else if (XML_TAG_SOURCE_URL.equals(startTag)) { String sourceUrl = parser.nextText(); note.sourceUrl = sourceUrl; parse_trace("Note source URL is " + note.sourceUrl); } else if (XML_TAG_CREATED.equals(startTag)) { String creationTime = parser.nextText(); note.creationTime = parse3339(creationTime); parse_trace("Creation time is " + creationTime + " (" + note.creationTime + ')'); } else if (XML_TAG_MODIFIED.equals(startTag)) { String modificationTime = parser.nextText(); note.modificationTime = parse3339(modificationTime); parse_trace( "Modification time is " + modificationTime + " (" + note.modificationTime + ')'); } else if (XML_TAG_REMINDER.equals(startTag)) { String reminderTime = parser.nextText(); note.reminderTime = parse3339(reminderTime); parse_trace("Reminder time is " + reminderTime + " (" + note.reminderTime + ')'); } else if (XML_TAG_TEXT.equals(startTag)) { String text = parser.nextText(); note.text = text; parse_trace("Note text is \"" + note.text + '"'); } else if (XML_TAG_SUMMARY.equals(startTag)) { String summary = parser.nextText(); note.summary = summary; parse_trace("Note summary is \"" + note.summary + '"'); } else if (XML_TAG_CHILDREN.equals(startTag)) { long childCount = Long.parseLong(parser.nextText()); note.children = childCount; parse_trace("Child count is " + note.children); } else if (XML_TAG_MODE.equals(startTag)) { String mode = parser.nextText(); note.mode = mode; parse_trace("Mode is " + note.mode); } else if (XML_TAG_PUBLIC_URL.equals(startTag)) { String publicUrl = parser.nextText(); note.publicUrl = publicUrl; parse_trace("Public URL is " + note.publicUrl); } // new blocks: else if (XML_TAG_USER.equals(startTag)) { parse_trace("Parsing note owner data."); parseNoteOwner(parser, note); } else if (XML_TAG_TAGS.equals(startTag)) { parse_trace("Parsing note tags."); parseTags(parser, note); } else if (XML_TAG_LOCATION.equals(startTag)) { parse_trace("Parsing geotag."); parseLocation(parser, note); } else if (XML_TAG_MEDIA.equals(startTag)) { parse_trace("Parsing media list."); parseMedia(parser, note); } else { parse_trace("(parseNote) unknown XML tag: <" + startTag + ">"); } } else if (eventType == XmlPullParser.END_TAG) { String endTag = parser.getName(); if (XML_TAG_NOTE.equals(endTag)) { parse_trace("Parsing note complete."); break; } } eventType = parser.next(); } }