关于map数据格式转换为xml格式
map的大致数据为:map<String,Object> Object里面可以继续嵌套list,list里面继续放map如此.
@SuppressWarnings("unchecked")
public Element GetXMLFromMap(Element root, Map<String, Object> map){
for (Entry<String, Object> entry : map.entrySet()) {
if (!(entry.getValue() instanceof HashMap || entry.getValue() instanceof ArrayList)) {
Element elementOne = root.addElement(entry.getKey());
elementOne.setText(String.valueOf(entry.getValue()));
} else if (entry.getValue() instanceof HashMap) {
Element elementTwo = root.addElement(entry.getKey());
list2Xml(elementTwo, (Map<String, Object>) entry.getValue());
} else {
List<Map<String, Object>> list = (List<Map<String, Object>>) entry.getValue();
Element elementThr = root.addElement(entry.getKey());
for (Map<String, Object> listMap : list) {
list2Xml(elementThr, (Map<String, Object>) listMap);
}
}
}
return root;
}
/*
* 输出去的xml格式化
*/
public static String formatXML(String str) throws Exception {
SAXReader reader=new SAXReader();
//创建一个串的字符输入流
StringReader in=new StringReader(str);
Document doc=reader.read(in);
// 创建输出格式
OutputFormat formater=OutputFormat.createPrettyPrint();
//去掉xml文件的版本信息
formater.setSuppressDeclaration(true);
//设置xml的输出编码
formater.setEncoding("UTF-8");
//创建输出(目标)
StringWriter out=new StringWriter();
//创建输出流
XMLWriter writer=new XMLWriter(out,formater);
//输出格式化的串到目标中,执行后。格式化后的串保存在out中。
writer.write(doc);
writer.close();
//返回我们格式化后的结果
return out.toString();
}
测试:
public static void main(String[] args) {
Map<String, Object> map = new HashMap<String, Object>();
Map<String, Object> orderDetaila = new HashMap<String, Object>();
Map<String, Object> orderDetailb = new HashMap<String, Object>();
List<Map<String, Object>> list=new ArrayList<Map<String, Object>>();
orderDetaila.put("id", "订单1");
orderDetaila.put("code","订单1code");
List<Map<String, Object>> lista=new ArrayList<Map<String, Object>>();
Map<String, Object> Detaila = new HashMap<String, Object>();
Map<String, Object> Detailb = new HashMap<String, Object>();
Detaila.put("id", "订单1_订单详细1");
Detaila.put("code","订单1_订单详细1code");
Detailb.put("id", "订单2_订单详细1");
Detailb.put("code","订单2_订单详细1code");
lista.add(Detaila);
lista.add(Detailb);
orderDetaila.put("orderDeatil", lista);
orderDetailb.put("id", "订单2");
orderDetailb.put("code","订单2code");
List<Map<String, Object>> listb=new ArrayList<Map<String, Object>>();
Map<String, Object> Detailc = new HashMap<String, Object>();
Map<String, Object> Detaild = new HashMap<String, Object>();
Detailc.put("id", "订单2_订单详细1");
Detailc.put("code","订单2_订单详细1code");
Detaild.put("id", "订单2_订单详细2");
Detaild.put("code","订单2_订单详细2code");
listb.add(Detailc);
listb.add(Detaild);
orderDetailb.put("orderDeatil", listb);
list.add(orderDetailb);
list.add(orderDetaila);
map.put("name", "张三");
map.put("age", 23);
map.put("address", "广州天河区");
map.put("order", list);
Map<String, Object> mapee = new HashMap<String, Object>();
mapee.put("city_name", "北京");
mapee.put("phone","027-12345678");
map.put("consignee", mapee);
Document document = DocumentHelper.createDocument();
Element root = null;
root = document.addElement("orders");
root=GetXMLFromMap(root,map);
String memberXmlText=root.asXML();
try {
memberXmlText=formatXML(memberXmlText);
} catch (Exception e) {
e.printStackTrace();
}
// memberXmlText = JsonBinder.buildNormalBinder().toJson(memberXmlText);
System.out.println(memberXmlText);
}
本文提供了一个将复杂嵌套的Map数据结构转换成XML格式的Java实现案例,包括处理Map中嵌套Map和List的情况,并展示了如何美化输出的XML。

5467

被折叠的 条评论
为什么被折叠?



