`
M.c
  • 浏览: 16365 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

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
0
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics