Android 公用XML解析

对简单的XML有成效。自己用的还不错。
不多说上代码:
/**
 * 公用XNL解析
 * @param cla 解析的实体(实体内的所有字段必须为String类型)
 * @param result
 */
public void anaXML(Class<?> cla,String result){
	List<Object> list=null;//return对象
	try {
		XmlPullParser parser = XmlPullParserFactory.newInstance().newPullParser();
		parser.setInput(new StringReader(result));
		Method[] methods=cla.getMethods();//获取实体内的所有方法
		String className=cla.getSimpleName();//实体类名
		int eventType = parser.getEventType();
		list=new ArrayList<Object>();//实例化返回对象
		while (eventType != XmlPullParser.END_DOCUMENT) {
			String name = parser.getName();//获取节点Name
			if(className.equalsIgnoreCase(name)&&eventType== XmlPullParser.START_TAG){//判断是否符合与实体类符合
				Object o=cla.newInstance();//实体化实体类
				for(int j=0;j<methods.length;j++){//循环实体内的方法
					String metName=methods[j].getName();//获取方法Name
					for (int i = 0; i < parser.getAttributeCount(); i++) {//循环xml内的值
						String attributeName="set"+parser.getAttributeName(i);//为获取的XML中字段Name加set字符以便于与set方法匹配
						if(attributeName.equalsIgnoreCase(metName)){//判断字段name与实体方法名是否相同
							Method setMethod=cla.getMethod(metName, String.class);
							setMethod.invoke(o,parser.getAttributeValue(i));
						}
					}
				}
				list.add(o);
			}
			eventType = parser.next();// 获取下一个节点的值
		}
	} catch (Exception e) {
		e.printStackTrace();
	}

}


声明
        欢迎转载,但请保留文章原始出处
        [Iteye]- http://jnwsczh.iteye.com/blog/2019500

猜你喜欢

转载自jnwsczh.iteye.com/blog/2019500