对象转为xml工具类

需要的jar包: dom4j.jar

Document doc = DocumentHelper.createDocument();
Element context= doc.addElement("context");

添加单个子节点

context.addElement("pagesize").setText("10");

如果子节点是一个List或Map或Bean等

/**
 * bean转至xml
 */
public static void transBeanIntoElement(Object bean, Branch element)
{
    if (bean == null)
    {
        element.setText("");
    }
    else if (bean instanceof String || bean instanceof Number)
    {
        // 字符串或数字
        element.setText(String.valueOf(bean));
    }
    else if (bean instanceof Date)
    {
        // 符合该格式的时间类型
        element.setText(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(bean));
    }
    else if (bean instanceof List)
    {
        // List转为xml
        String oName = pluralToSingular(element.getName());// 获List子节点的名称
        for (Object o : (List)bean)
        {
            Element e = element.addElement(oName);
            // 递归
            transBeanIntoElement(o, e);
        }
    }
    else if (bean.getClass().isArray())
    {
        // 数组转为xml
        String oName = pluralToSingular(element.getName());// 获取数组子节点的名称
        for (int i = 0; i < Array.getLength(bean); i++)
        {
            Object o = Array.get(bean, i);
            Element e = element.addElement(oName);
            // 递归
            transBeanIntoElement(o, e);
        }
    }
    else if (bean instanceof Map)
    {
        // Map转为xml
        for (Map.Entry<Object, Object> entry : ((Map<Object, Object>)bean).entrySet())
        {
            Element e = element.addElement(String.valueOf(entry.getKey()));
            // 递归
            transBeanIntoElement(entry.getValue(), e);
        }
    }
    else
    {
        // Bean对象转为xml
        for (Method m : bean.getClass().getMethods())
        {
            String methodName = m.getName();
            if (methodName.startsWith("get") && !methodName.equals("getClass") && !methodName.equals("get") && m.getParameterTypes().length == 0)
            {
                String fieldName = methodName.substring(3, 4).toLowerCase() + methodName.substring(4);

                Object fieldValue = null;
                try
                {
                    fieldValue = m.invoke(bean);
                }
                catch (Exception e)
                {
                    e.printStackTrace();
                }
                Element field = element.addElement(fieldName);
                // 递归
                transBeanIntoElement(fieldValue, field);
            }
        }
    }
}
public static String pluralToSingular(String str)
{
   if (str.length() <= 1)
   {}
   else if (str.endsWith("s"))
   {
       str = str.substring(0, str.length() - 1);
   }
   else if ((str.endsWith("list") || str.endsWith("List")) && str.length() > 4)
   {
       str = str.substring(0, str.length() - 4);
   }
   return str;
}

例子

List<MainOrderBean> mainOrderList = ...
Element main_orders = context.addElement("main_orders");
transBeanIntoElement(mainOrderList, main_orders);
String xml = doc.getRootElement().asXML();
<context>
	<main_orders>
		<main_order>
			<order_id></order_id>
			<region></region>
			...
		</main_order>
		<main_order>
			<order_id></order_id>
			<region></region>
			...
		</main_order>
		<main_order>
			<order_id></order_id>
			<region></region>
			...
		</main_order>
	</main_orders>
</context>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值