/** * 获取动弹详情 * * @param tweet_id * @return * @throws AppException */ public Tweet getTweet(int tweet_id, boolean isRefresh) throws AppException { Tweet tweet = null; String key = "tweet_" + tweet_id; if (isNetworkConnected() && (!isReadDataCache(key) || isRefresh)) { try { tweet = ApiClient.getTweetDetail(this, tweet_id); if (tweet != null) { Notice notice = tweet.getNotice(); tweet.setNotice(null); tweet.setCacheKey(key); saveObject(tweet, key); tweet.setNotice(notice); } } catch (AppException e) { tweet = (Tweet) readObject(key); if (tweet == null) throw e; } } else { tweet = (Tweet) readObject(key); if (tweet == null) tweet = new Tweet(); } return tweet; }
public static Tweet parse(InputStream inputStream) throws IOException, AppException { Tweet tweet = null; // 获得XmlPullParser解析器 XmlPullParser xmlParser = Xml.newPullParser(); try { xmlParser.setInput(inputStream, UTF8); // 获得解析到的事件类别,这里有开始文档,结束文档,开始标签,结束标签,文本等等事件。 int evtType = xmlParser.getEventType(); // 一直循环,直到文档结束 while (evtType != XmlPullParser.END_DOCUMENT) { String tag = xmlParser.getName(); switch (evtType) { case XmlPullParser.START_TAG: if (tag.equalsIgnoreCase(NODE_START)) { tweet = new Tweet(); } else if (tweet != null) { if (tag.equalsIgnoreCase(NODE_ID)) { tweet.id = StringUtils.toInt(xmlParser.nextText(), 0); } else if (tag.equalsIgnoreCase(NODE_FACE)) { tweet.setFace(xmlParser.nextText()); } else if (tag.equalsIgnoreCase(NODE_BODY)) { tweet.setBody(xmlParser.nextText()); } else if (tag.equalsIgnoreCase(NODE_AUTHOR)) { tweet.setAuthor(xmlParser.nextText()); } else if (tag.equalsIgnoreCase(NODE_AUTHORID)) { tweet.setAuthorId(StringUtils.toInt(xmlParser.nextText(), 0)); } else if (tag.equalsIgnoreCase(NODE_COMMENTCOUNT)) { tweet.setCommentCount(StringUtils.toInt(xmlParser.nextText(), 0)); } else if (tag.equalsIgnoreCase(NODE_PUBDATE)) { tweet.setPubDate(xmlParser.nextText()); } else if (tag.equalsIgnoreCase(NODE_IMGSMALL)) { tweet.setImgSmall(xmlParser.nextText()); } else if (tag.equalsIgnoreCase(NODE_IMGBIG)) { tweet.setImgBig(xmlParser.nextText()); } else if (tag.equalsIgnoreCase(NODE_ATTACH)) { tweet.setAttach(xmlParser.nextText()); } else if (tag.equalsIgnoreCase(NODE_APPCLIENT)) { tweet.setAppClient(StringUtils.toInt(xmlParser.nextText(), 0)); } // 通知信息 else if (tag.equalsIgnoreCase("notice")) { tweet.setNotice(new Notice()); } else if (tweet.getNotice() != null) { if (tag.equalsIgnoreCase("atmeCount")) { tweet.getNotice().setAtmeCount(StringUtils.toInt(xmlParser.nextText(), 0)); } else if (tag.equalsIgnoreCase("msgCount")) { tweet.getNotice().setMsgCount(StringUtils.toInt(xmlParser.nextText(), 0)); } else if (tag.equalsIgnoreCase("reviewCount")) { tweet.getNotice().setReviewCount(StringUtils.toInt(xmlParser.nextText(), 0)); } else if (tag.equalsIgnoreCase("newFansCount")) { tweet.getNotice().setNewFansCount(StringUtils.toInt(xmlParser.nextText(), 0)); } } } break; case XmlPullParser.END_TAG: break; } // 如果xml没有结束,则导航到下一个节点 evtType = xmlParser.next(); } } catch (XmlPullParserException e) { throw AppException.xml(e); } finally { inputStream.close(); } return tweet; }