/**
* pull解析xml
*
* @param XML
* @param elemt
* @param clazz指定接收的model类名称
* @param strs是Fileds字符串数据
* @return
*/
public static List<Object> getParserFromXML(String XML, String elemt,
String clazz) throws Exception {
XmlPullParser parser = Xml.newPullParser();
parser.setInput(convert_StringTOInputStream(XML), "GB2312");
List<Object> list = new ArrayList<Object>();
Object obj = null;
Boolean isStarted = false;
Field[] fields_CST = CST.class.getFields();
int event = parser.getEventType();// 产生第一个事件
while (event != XmlPullParser.END_DOCUMENT) {
switch (event) {
case XmlPullParser.START_DOCUMENT:// 判断当前事件是否是文档开始事件
break;
case XmlPullParser.START_TAG:// 判断当前事件是否是标签元素开始事件
if (elemt.equals(parser.getName())) {
// 判断开始标签元素是否是所指定的element
if (clazz != null && clazz != "") {
obj = Class.forName(clazz).newInstance();
isStarted = true;
} else {
obj = parser.nextText();
list.add(obj);
return list;
}
} else if (isStarted) {
// 开始填数据至obj
for (int i = 0; i < fields_CST.length - 1; i++) {
if (parser.getName().equals(fields_CST[i].get(null))) {
String fname = fields_CST[i].getName();
fname=fname.substring(0,fname.indexOf("_"));
fname =Character.toUpperCase(fname.charAt(0))+fname.substring(1);
Class.forName(clazz)
.getMethod("set" + fname, String.class)
.invoke(obj, parser.nextText());
break;
}
}
}
break;
case XmlPullParser.END_TAG:// 判断当前事件是否是标签元素结束事件
if (elemt.equals(parser.getName())) {// 判断结束标签元素是否是book
list.add(obj);// 将book添加到books集合
obj = null;
isStarted = false;
}
break;
}
event = parser.next();// 进入下一个元素并触发相应事件
}
return list;
}
android--笔记--自动解析xml
最新推荐文章于 2024-01-28 12:54:45 发布