Android使用XmlPullParserFactory解析Xml数据通用方法

public List TongYong(Class Mclass,InputStream inStream)throws Exception{
XmlPullParserFactory pullFactory = XmlPullParserFactory.newInstance();
XmlPullParser parser = pullFactory.newPullParser();
parser.setInput(inStream, "UTF-8");
int eventType = parser.getEventType();
List mList=null;
HashMap mMethod=new HashMap();
if(inStream!=null){
Method [] mm=Mclass.getMethods();
for(int i=0;iString methodname=mm[i].getName().toLowerCase();
if(methodname.startsWith("set")){
mMethod.put(methodname.split("set")[1], mm[i]);
}
}
}
String classname=Mclass.getName();
classname=classname.substring(https://www.360docs.net/doc/953402452.html,stIndexOf(".")+1,classname.length());
T entity = Mclass.newInstance();
while(eventType!=XmlPullParser.END_DOCUMENT){
switch (eventType){
case XmlPullParser.START_DOCUMENT:
mList = new ArrayList();
break;
case XmlPullParser.START_TAG:
String name = parser.getName();
if(classname.equals(name)){
Method mth=mMethod.get("id");
mth.invoke(entity, parser.getAttributeValue(0));
}else if(!"students".equals(name)){
Method mmth=mMethod.get(name);
String methodType = mmth.getParameterTypes()[0].getName();
switch(methodType.hashCode()){
case 1195259493:
mmth.invoke(entity, String.valueOf(parser.nextText()));
break;
case 104431:
mmth.invoke(entity, Integer.parseInt(parser.nextText()));
break;
case 761287205:
mmth.invoke(entity, Double.parseDouble(parser.nextText()));
break;
default:break;
}
}
break;
case XmlPullParser.END_TAG:
//
if(classname.equals(parser.getName())){
mList.add(entity);
entity = null;
entity = Mclass.newInstance();
}
break;
default:
break;
}
eventType = parser.next();
}
return mList;
}

相关主题
相关文档
最新文档