package net.oschina.app.bean; import java.io.IOException; import java.io.InputStream; import net.oschina.app.AppException; import net.oschina.app.common.StringUtils; import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlPullParserException; import android.util.Xml; /** * 软件实体类 * @author liux (http://my.oschina.net/liux) * @version 1.0 * @created 2012-3-21 */ public class Software extends Entity { private String title; private String extensionTitle; private String license; private String body; private String homepage; private String document; private String download; private String logo; private String language; private String os; private String recordtime; private int favorite; public int getFavorite() { return favorite; } public void setFavorite(int favorite) { this.favorite = favorite; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public String getExtensionTitle() { return extensionTitle; } public void setExtensionTitle(String extensionTitle) { this.extensionTitle = extensionTitle; } public String getLicense() { return license; } public void setLicense(String license) { this.license = license; } public String getBody() { return body; } public void setBody(String body) { this.body = body; } public String getHomepage() { return homepage; } public void setHomepage(String homepage) { this.homepage = homepage; } public String getDocument() { return document; } public void setDocument(String document) { this.document = document; } public String getDownload() { return download; } public void setDownload(String download) { this.download = download; } public String getLogo() { return logo; } public void setLogo(String logo) { this.logo = logo; } public String getLanguage() { return language; } public void setLanguage(String language) { this.language = language; } public String getOs() { return os; } public void setOs(String os) { this.os = os; } public String getRecordtime() { return recordtime; } public void setRecordtime(String recordtime) { this.recordtime = recordtime; } public static Software parse(InputStream inputStream) throws IOException, AppException { Software sw = 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("software")) { sw = new Software(); } else if(sw != null) { if(tag.equalsIgnoreCase("id")) { sw.id = StringUtils.toInt(xmlParser.nextText(),0); } else if(tag.equalsIgnoreCase("title")) { sw.setTitle(xmlParser.nextText()); } else if(tag.equalsIgnoreCase("extensionTitle")) { sw.setExtensionTitle(xmlParser.nextText()); } else if(tag.equalsIgnoreCase("license")) { sw.setLicense(xmlParser.nextText()); } else if(tag.equalsIgnoreCase("body")) { sw.setBody(xmlParser.nextText()); } else if(tag.equalsIgnoreCase("homepage")) { sw.setHomepage(xmlParser.nextText()); } else if(tag.equalsIgnoreCase("document")) { sw.setDocument(xmlParser.nextText()); } else if(tag.equalsIgnoreCase("download")) { sw.setDownload(xmlParser.nextText()); } else if(tag.equalsIgnoreCase("logo")) { sw.setLogo(xmlParser.nextText()); } else if(tag.equalsIgnoreCase("language")) { sw.setLanguage(xmlParser.nextText()); } else if(tag.equalsIgnoreCase("os")) { sw.setOs(xmlParser.nextText()); } else if(tag.equalsIgnoreCase("recordtime")) { sw.setRecordtime(xmlParser.nextText()); } else if(tag.equalsIgnoreCase("favorite")) { sw.setFavorite(StringUtils.toInt(xmlParser.nextText(),0)); } //通知信息 else if(tag.equalsIgnoreCase("notice")) { sw.setNotice(new Notice()); } else if(sw.getNotice() != null) { if(tag.equalsIgnoreCase("atmeCount")) { sw.getNotice().setAtmeCount(StringUtils.toInt(xmlParser.nextText(),0)); } else if(tag.equalsIgnoreCase("msgCount")) { sw.getNotice().setMsgCount(StringUtils.toInt(xmlParser.nextText(),0)); } else if(tag.equalsIgnoreCase("reviewCount")) { sw.getNotice().setReviewCount(StringUtils.toInt(xmlParser.nextText(),0)); } else if(tag.equalsIgnoreCase("newFansCount")) { sw.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 sw; } }