不多说上代码:
/** * 公用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