微信公众号开发_ReceiveXmlProcess的代码(九)

来源:互联网 发布:紫金银交易软件 编辑:程序博客网 时间:2024/06/07 03:19
package com.igoxin.weixin.custom;import java.lang.reflect.Field;import java.lang.reflect.Method;import java.util.Iterator;import org.dom4j.Document;import org.dom4j.DocumentHelper;import org.dom4j.Element;/** * 解析接收到的微信xml,返回消息对象 * @author fanglanfeng * */public class ReceiveXmlProcess {/** * 解析微信xml消息 * @param strXml * @return */public ReceiveXmlEntity getMsgEntity(String strXml){ReceiveXmlEntity msg = null;try {if (strXml.length() <= 0 || strXml == null)return null;// 将字符串转化为XML文档对象Document document = DocumentHelper.parseText(strXml);// 获得文档的根节点Element root = document.getRootElement();// 遍历根节点下所有子节点Iterator<?> iter = root.elementIterator();// 遍历所有结点msg = new ReceiveXmlEntity();//利用反射机制,调用set方法//获取该实体的元类型Class<?> c = Class.forName("com.igoxin.weixin.custom.ReceiveXmlEntity");msg = (ReceiveXmlEntity)c.newInstance();//创建这个实体的对象while(iter.hasNext()){Element ele = (Element)iter.next();//获取set方法中的参数字段(实体类的属性)Field field = c.getDeclaredField(ele.getName());//获取set方法,field.getType())获取它的参数数据类型Method method = c.getDeclaredMethod("set"+ele.getName(), field.getType());//调用set方法method.invoke(msg, ele.getText());}} catch (Exception e) {// TODO: handle exceptionSystem.out.println("xml 格式异常: "+ strXml);e.printStackTrace();}return msg;}}

0 0
原创粉丝点击