对象转为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>