package org.carelife.creader.xmlparser;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import org.carelife.creader.dao.RankData;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserFactory;
public class RankParser {
public static HashMap<String,Object> getRankResultByXml(InputStream is)
{
// Log.i("pull parser","begin");
HashMap<String,Object> result = null;
List<RankData> Rlist = null;
RankData Rank_data = null;
String currentTag = null;
String count = null;
try{
XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
XmlPullParser parser = factory.newPullParser();
parser.setInput(is, "GBK");
int type = parser.getEventType();
while (type != XmlPullParser.END_DOCUMENT)
{
String typeName = parser.getName();
if (type == XmlPullParser.START_TAG)
{
// Log.v("TAG", "typeName=" + typeName);
if ("DOCUMENT".equals(typeName)){
result = new HashMap<String,Object>();
Rlist = new ArrayList<RankData>();
}else if ("count".equals(typeName)){
currentTag = "count";
}else if ("item".equals(typeName)){
Rank_data = new RankData();
}else if ("book".equals(typeName)){
currentTag = "book";
}else if ("author".equals(typeName)){
currentTag = "author";
}else if ("type".equals(typeName)){
currentTag = "type";
}else if ("status".equals(typeName)){
currentTag = "status";
}else if ("desc".equals(typeName)){
currentTag = "desc";
}else if ("picurl".equals(typeName)){
currentTag = "picurl";
}
}else if (type == XmlPullParser.END_TAG){
if ("item".equals(typeName))
{
Rlist.add(Rank_data);
Rank_data = null;
}else if("DOCUMENT".equals(typeName)){
result.put("count", count);
result.put("rankitem", Rlist);
}
}else if (type == XmlPullParser.TEXT){
String s = parser.getText();
// Log.i("text",s);
if ("count".equals(currentTag))
{
count = s;
currentTag = null;
}else if ("book".equals(currentTag)){
Rank_data.setbookname(s);
currentTag = null;
}else if ("author".equals(currentTag)){
Rank_data.setauthor_name(s);
currentTag = null;
}else if ("type".equals(currentTag)){
Rank_data.settype(s);
currentTag = null;
}else if ("status".equals(currentTag)){
Rank_data.setstatus(Integer.parseInt(s));
currentTag = null;
}else if ("desc".equals(currentTag)){
Rank_data.setdesc(s);
currentTag = null;
}else if ("picurl".equals(currentTag)){
Rank_data.setpicurl(s);
currentTag = null;
}
}
type = parser.next();
}
// Log.v("TAG", "size=" + list.size());
}catch(Exception e){
e.printStackTrace();
}
return result;
}
}