您的位置:首页 > 编程语言 > Java开发

java的map格式数据转xml

2013-05-13 09:35 399 查看
关于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);

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: