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);
}
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);
}
相关文章推荐
- Android/Java XML数据格式解析的两种方式
- (A4,二)java数据交换格式---Xml详解
- Java中将JSON格式的数据转换成对应的Bean、Map、List数据
- java将XML文档转换成json格式数据
- java将XML文档转换成json格式数据
- 【Java中将JSON格式的数据转换成对应的Bean、Map、List数据】
- java解析json格式的数据,其中json是List和Map格式
- Java将XML转换成Json格式数据
- fastJson在java后台转换json格式数据探究(二)--处理数组/List/Map
- fastJson在java后台转换json格式数据探究(二)--处理数组/List/Map
- [javase][json]fastJson在java后台转换json格式数据探究--处理数组/List/Map
- JSON与JAVA数据的转换(bean,map和XML转换成JSON并能够把JSON转回成bean和DynaBean)
- Java中将JSON格式的数据转换成对应的Bean、Map、List数据
- Java中将JSON格式的数据转换成对应的Bean、Map、List数据
- Java中将JSON格式的数据转换成对应的Bean、Map、List数据
- Java中将JSON格式的数据转换成对应的Bean、Map、List数据
- Java中将JSON格式的数据转换成对应的Bean、Map、List数据
- Java大批量导出数据,格式可以为xml或excel
- java进阶巩固--XML数据格式
- Java大批量导出数据,格式可以为xml或excel