• Java Map转成xml标签字符串


    一个简单的java实现,供参考:
    package com.trilogy.session.data;
    
    import java.lang.reflect.Field;
    import java.util.Collection;
    import java.util.Map;
    import java.util.Set;
    
    /**
     * The Class MapToXMLString.
     *
     * @author sword.cai (c) Totyustar 2008.
     */
    public class MapToXMLString {
    
        /**
         * Converter Map<Object, Object> instance to xml string. Note: currently,
         * we aren't consider more about some collection types, such as array,list,
         *
         * @param dataMap  the data map
         *
         * @return the string
         */
        public static String converter(Map<Object, Object> dataMap)
        {
            synchronized (MapToXMLString.class)
            {
                StringBuilder strBuilder = new StringBuilder();
                strBuilder.append("<xmlroot>");
                Set<Object> objSet = dataMap.keySet();
                for (Object key : objSet)
                {
                    if (key == null)
                    {
                        continue;
                    }
                    strBuilder.append("
    ");
                    strBuilder.append("<").append(key.toString()).append(">
    ");
                    Object value = dataMap.get(key);
                    strBuilder.append(coverter(value));
                    strBuilder.append("</").append(key.toString()).append(">
    ");
                }
                strBuilder.append("</xmlroot>");
                return strBuilder.toString();
            }
        }
    
        public static String coverter(Object[] objects) {
            StringBuilder strBuilder = new StringBuilder();
            for(Object obj:objects) {
                strBuilder.append("<item className=").append(obj.getClass().getName()).append(">
    ");
                strBuilder.append(coverter(obj));
                strBuilder.append("</item>
    ");
            }
            return strBuilder.toString();
        }
    
        public static String coverter(Collection<?> objects)
        {
            StringBuilder strBuilder = new StringBuilder();
            for(Object obj:objects) {
                strBuilder.append("<item className=").append(obj.getClass().getName()).append(">
    ");
                strBuilder.append(coverter(obj));
                strBuilder.append("</item>
    ");
            }
            return strBuilder.toString();
        }
    
        /**
         * Coverter.
         *
         * @param object the object
         * @return the string
         */
        public static String coverter(Object object)
        {
            if (object instanceof Object[])
            {
                return coverter((Object[]) object);
            }
            if (object instanceof Collection)
            {
                return coverter((Collection<?>) object);
            }
            StringBuilder strBuilder = new StringBuilder();
            if (isObject(object))
            {
                Class<? extends Object> clz = object.getClass();
                Field[] fields = clz.getDeclaredFields();
    
                for (Field field : fields)
                {
                    field.setAccessible(true);
                    if (field == null)
                    {
                        continue;
                    }
                    String fieldName = field.getName();
                    Object value = null;
                    try
                    {
                        value = field.get(object);
                    }
                    catch (IllegalArgumentException e)
                    {
                        continue;
                    }
                    catch (IllegalAccessException e)
                    {
                        continue;
                    }
                    strBuilder.append("<").append(fieldName)
                            .append(" className="").append(
                                    value.getClass().getName()).append("">
    ");
                    if (isObject(value))
                    {
                        strBuilder.append(coverter(value));
                    }
                    else if (value == null)
                    {
                        strBuilder.append("null
    ");
                    }
                    else
                    {
                        strBuilder.append(value.toString() + "
    ");
                    }
                    strBuilder.append("</").append(fieldName).append(">
    ");
                }
            }
            else if (object == null)
            {
                strBuilder.append("null
    ");
            }
            else
            {
                strBuilder.append(object.toString() + "
    ");
            }
            return strBuilder.toString();
        }
    
        /**
         * Checks if is object.
         *
         * @param obj the obj
         *
         * @return true, if is object
         */
        private static boolean isObject(Object obj)
        {
            if (obj == null)
            {
                return false;
            }
            if (obj instanceof String)
            {
                return false;
            }
            if (obj instanceof Integer)
            {
                return false;
            }
            if (obj instanceof Double)
            {
                return false;
            }
            if (obj instanceof Float)
            {
                return false;
            }
            if (obj instanceof Byte)
            {
                return false;
            }
            if (obj instanceof Long)
            {
                return false;
            }
            if (obj instanceof Character)
            {
                return false;
            }
            if (obj instanceof Short)
            {
                return false;
            }
            if (obj instanceof Boolean)
            {
                return false;
            }
            return true;
        }
    
    }
  • 相关阅读:
    HBase(九)HBase表以及Rowkey的设计
    iOS-动态库创建(详解)
    组件化-动态库实战
    Xcode创建子工程以及工程依赖
    XMPP详解
    iOS中WebKit框架应用与解析
    HYStockChart, 股票图(包括K线图、趋势图、成交量、滚动、放大缩小等)
    OC与JS交互
    iOS 与 js交互的其一方法 WebViewJavascriptBridge的使用
    OC和JS调用
  • 原文地址:https://www.cnblogs.com/chenghu/p/5439694.html
Copyright © 2020-2023  润新知