XmlBeanMap convert

package com.yung.wx.integration.util;import com.thoughtworks.xstream.XStream;import com.yung.configuration.interceptor.XStreamFactory;import java.io.StringReader;import java.lang.reflect.Field;import java.util.HashMap;import java.util.List;import java.util.Map;import org.dom4j.Document;import org.dom4j.DocumentException;import org.dom4j.Element;import org.dom4j.io.SAXReader;public class XMLBeanUtil {  private static final XStream xStream = XStreamFactory.getXStream();  /**   * xml转对象   * @param xml        xml字符串   * @param bean       bean   * @param ignoreCase 是否不区分大小写匹配   * @return bean   */  public static <T> T xmlToBean(String xml,T bean,boolean ignoreCase) {    Map<String,String> nodeMap = XMLBeanUtil.xmlToMap(xml);    return mapToBean(nodeMap,bean,ignoreCase);  }  /**   * xml转对象   * @param xml xml字符串   * @return Map   */  public static Map<String,String> xmlToMap(String xml) {    try {      SAXReader sax = new SAXReader();//创建一个SAXReader对象      StringReader read = new StringReader(xml);      Document document = sax.read(read);//获取document对象,如果文档无节点,则会抛出Exception提前结束      Element root = document.getRootElement();//获取根节点      Map<String,String> nodeMap = new HashMap<>();      getNode(root,nodeMap);      return nodeMap;    } catch (DocumentException e) {      return new HashMap<>();    }  }  public static <T> T mapToBean(Map<String,String> map,boolean ignoreCase) {    Field[] fields = bean.getClass().getDeclaredFields();    if (ignoreCase) {      for (Field f : fields) {        for (String k : map.keySet()) {          if (k.equalsIgnoreCase(f.getName())) {            f.setAccessible(true);            try {              f.set(bean,map.get(k));            } catch (IllegalAccessException ignore) {            }          }        }      }    } else {      for (Field f : fields) {        for (String k : map.keySet()) {          if (k.equals(f.getName())) {            f.setAccessible(true);            try {              f.set(bean,map.get(k));            } catch (IllegalAccessException ignore) {            }          }        }      }    }    return bean;  }  private static void getNode(Element root,Map<String,String> nodeMap) {    List<Element> list = root.elements();    for (Element e : list) {      if ("".equals(e.getTextTrim())) {        getNode(e,nodeMap);      } else {        nodeMap.put(e.getName(),e.getTextTrim());      }    }  }  /**   * 对象转xml   * @param obj 对象   * @return String   */  public static String toXml(Object obj) {    xStream.processAnnotations(obj.getClass());    return xStream.toXML(obj);  }}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


php输出xml格式字符串
J2ME Mobile 3D入门教程系列文章之一
XML轻松学习手册
XML入门的常见问题(一)
XML入门的常见问题(三)
XML轻松学习手册(2)XML概念
xml文件介绍及使用
xml编程(一)-xml语法
XML文件结构和基本语法
第2章 包装类
XML入门的常见问题(二)
Java对象的强、软、弱和虚引用
JS解析XML文件和XML字符串详解
java中枚举的详细使用介绍
了解Xml格式
XML入门的常见问题(四)
深入SQLite多线程的使用总结详解
PlayFramework完整实现一个APP(一)
XML和YAML的使用方法
XML轻松学习总节篇