XmlToJson.java
12.7 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
package com.bsth.util;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import org.dom4j.*;
import java.io.File;
import java.io.FileInputStream;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;
import java.util.List;
public class XmlToJson {
public static void main(String[] args) throws Exception {
// String xmlStr= readFile("D:/ADA/et/Issue_20130506_back.xml");
// Document doc= DocumentHelper.parseText(xmlStr);
// JSONObject json=new JSONObject();
// dom4j2Json(doc.getRootElement(),json);
// System.out.println("xml2Json:"+json.toJSONString());
String a = "[{'s':'sd','b':'sd'},{'s':'11','b':'22'}]";
System.out.println(a.toString());
String b = "{lhjcData={tabledata=[[{zdmc=组织机构代码, zd=TYSBM, zdmcdata=630301035}, {zdmc=对象名称, zd=DXMC, zdmcdata=测试公司1}, {zdmc=备忘录ID, zd=BWLID, zdmcdata=e4e4e4b15c3346ff015c336517a80043}, {zdmc=备忘录名称, zd=BWLMC, zdmcdata=对失信被执行人实施联合惩戒的合作备忘录}, {zdmc=行为事项, zd=XWSX, zdmcdata=最高人民法院公布的失信被执行人}, {zdmc=奖惩类型编码, zd=JCLX, zdmcdata=20}, {zdmc=奖惩类型名称, zd=JCLXMC, zdmcdata=惩戒}, {zdmc=判决法院, zd=PJFY, zdmcdata=上海市宝山区人民法院}, {zdmc=文书号, zd=WSH, zdmcdata=(2016)沪0113民初02817号}, {zdmc=立案日期, zd=LARQ, zdmcdata=2017/08/11}]], tablename=奖惩对象信息}, enterpriseData={resultGLL=null, resultDJL=[{tabledata=[[{zdmc=法定代表人, zdmcdata=TIMOTHY BRIAN CONSIDINE, zd=principalname}, {zdmc=工商注册号, zdmcdata=310000400595922, zd=regno}, {zdmc=法人类型, zdmcdata=公司, zd=organtype}, {zdmc=成立日期, zdmcdata=2009-03-30, zd=approvedate}, {zdmc=经营范围, zdmcdata=家具、金属制品、木工制品、亚克力制品的批发、进出口,并提供相关配套服务。 【依法须经批准的项目,经相关部门批准后方可开展经营活动】, zd=tradescope}, {zdmc=组织机构代码, zdmcdata=685514951, zd=organcode}, {zdmc=注册地址, zdmcdata=上海市静安区南京西路920号南泰大厦16A楼11室, zd=address}, {zdmc=法人名称, zdmcdata=测试公司1, zd=organname}, {zdmc=注册资金(万), zdmcdata=14, zd=regcapital}, {zdmc=币种, zdmcdata=美元, zd=currencytype}, {zdmc=登记状态, zdmcdata=确立, zd=organstatus}, {zdmc=信息类别, zdmcdata=登记类, zd=XXLB}, {zdmc=来源部门, zdmcdata=市工商局, zd=XXSSDW}]], tablename=企业登记信息}, {tabledata=[[{zdmc=个人独资企业出资方式, zdmcdata=, zd=invest_type_id}, {zdmc=证照类型, zdmcdata=, zd=cert_type}, {zdmc=合伙人国别(地区)(外资), zdmcdata=英国, zd=nationality_id}, {zdmc=投资人名称, zdmcdata=CARDINAL PROJECT MANAGEMENT LIMITED, zd=investor_name}, {zdmc=证照编号, zdmcdata=, zd=cert_number}, {zdmc=投资人类型, zdmcdata=外国(地区)企业, zd=investor_type_gb}, {zdmc=合伙人住所(外资), zdmcdata=, zd=address}, {zdmc=合伙人承担责任方式(外资), zdmcdata=, zd=respond_way}, {zdmc=信息类别, zdmcdata=登记类, zd=XXLB}, {zdmc=来源部门, zdmcdata=市工商行政管理局, zd=XXSSDW}]], tablename=出资信息}, {tabledata=[[{zdmc=姓名, zdmcdata=TIMOTHY BRIAN CONSIDINE, zd=person_name}, {zdmc=职务, zdmcdata=执行董事, zd=hdsh_gb}, {zdmc=信息类别, zdmcdata=登记类, zd=XXLB}, {zdmc=来源部门, zdmcdata=市工商行政管理局, zd=XXSSDW}], [{zdmc=姓名, zdmcdata=陈漪, zd=person_name}, {zdmc=职务, zdmcdata=总经理, zd=hdsh_gb}, {zdmc=信息类别, zdmcdata=登记类, zd=XXLB}, {zdmc=来源部门, zdmcdata=市工商行政管理局, zd=XXSSDW}], [{zdmc=姓名, zdmcdata=MARK SIMPSON, zd=person_name}, {zdmc=职务, zdmcdata=监事, zd=hdsh_gb}, {zdmc=信息类别, zdmcdata=登记类, zd=XXLB}, {zdmc=来源部门, zdmcdata=市工商行政管理局, zd=XXSSDW}]], tablename=主要成员信息}, {tabledata=[[{zdmc=变更前内容, zdmcdata=0.0000万美元, zd=before_content}, {zdmc=变更后内容, zdmcdata=2.8000万美元, zd=after_content}, {zdmc=变更日期, zdmcdata=20090702, zd=change_date}, {zdmc=变更事项, zdmcdata=实收资本变更, zd=reg_item_gb}, {zdmc=信息类别, zdmcdata=登记类, zd=XXLB}, {zdmc=来源部门, zdmcdata=市工商行政管理局, zd=XXSSDW}], [{zdmc=变更前内容, zdmcdata=2.8000万美元, zd=before_content}, {zdmc=变更后内容, zdmcdata=7.0000万美元, zd=after_content}, {zdmc=变更日期, zdmcdata=20091111, zd=change_date}, {zdmc=变更事项, zdmcdata=实收资本变更, zd=reg_item_gb}, {zdmc=信息类别, zdmcdata=登记类, zd=XXLB}, {zdmc=来源部门, zdmcdata=市工商行政管理局, zd=XXSSDW}], [{zdmc=变更前内容, zdmcdata=CARDINAL PROJECT MANAGEMENT LIMITED 2009-09-24 货币4.2000万美元;CARDINAL PROJECT MANAGEMENT LIMITED 2009-06-15 货币2.8000万美元, zd=before_content}, {zdmc=变更后内容, zdmcdata=CARDINAL PROJECT MANAGEMENT LIMITED 2009-09-24 货币4.2000万美元;CARDINAL PROJECT MANAGEMENT LIMITED 2009-06-15 货币2.8000万美元;CARDINAL PROJECT MANAGEMENT LIMITED 2010-05-31 货币0.4500万美元;CARDINAL PROJECT MANAGEMENT LIMITED 2011-02-09 货币6.5500万美元, zd=after_content}, {zdmc=变更日期, zdmcdata=20110523, zd=change_date}, {zdmc=变更事项, zdmcdata=实收资本变更, zd=reg_item_gb}, {zdmc=信息类别, zdmcdata=登记类, zd=XXLB}, {zdmc=来源部门, zdmcdata=市工商行政管理局, zd=XXSSDW}], [{zdmc=变更前内容, zdmcdata=无, zd=before_content}, {zdmc=变更后内容, zdmcdata=陈漪, zd=after_content}, {zdmc=变更日期, zdmcdata=20171206, zd=change_date}, {zdmc=变更事项, zdmcdata=经理备案, zd=reg_item_gb}, {zdmc=信息类别, zdmcdata=登记类, zd=XXLB}, {zdmc=来源部门, zdmcdata=市工商行政管理局, zd=XXSSDW}], [{zdmc=变更前内容, zdmcdata=MICHAEL ANDREW BARNARD, zd=before_content}, {zdmc=变更后内容, zdmcdata=MARK SIMPSON, zd=after_content}, {zdmc=变更日期, zdmcdata=20171206, zd=change_date}, {zdmc=变更事项, zdmcdata=监事备案, zd=reg_item_gb}, {zdmc=信息类别, zdmcdata=登记类, zd=XXLB}, {zdmc=来源部门, zdmcdata=市工商行政管理局, zd=XXSSDW}], [{zdmc=变更前内容, zdmcdata=家具、货柜架、收银台、电器设备的批发、进出口,并提供相关设计咨询和配套服务(不涉及国营贸易管理商品,涉及配额、许可证管理商品的,按国家有关规定办理申请)。 【依法须经批准的项目,经相关部门批准后方可开展经营活动】, zd=before_content}, {zdmc=变更后内容, zdmcdata=家具、金属制品、木工制品、亚克力制品的批发、进出口,并提供相关配套服务。 【依法须经批准的项目,经相关部门批准后方可开展经营活动】, zd=after_content}, {zdmc=变更日期, zdmcdata=20171206, zd=change_date}, {zdmc=变更事项, zdmcdata=经营范围变更, zd=reg_item_gb}, {zdmc=信息类别, zdmcdata=登记类, zd=XXLB}, {zdmc=来源部门, zdmcdata=市工商行政管理局, zd=XXSSDW}], [{zdmc=变更前内容, zdmcdata=PAUL DAVID BENJAMIN CONSIDINE, zd=before_content}, {zdmc=变更后内容, zdmcdata=TIMOTHY BRIAN CONSIDINE, zd=after_content}, {zdmc=变更日期, zdmcdata=20171206, zd=change_date}, {zdmc=变更事项, zdmcdata=法定代表人变更, zd=reg_item_gb}, {zdmc=信息类别, zdmcdata=登记类, zd=XXLB}, {zdmc=来源部门, zdmcdata=市工商行政管理局, zd=XXSSDW}], [{zdmc=变更前内容, zdmcdata=MICHAEL PATRICK THOMPSON;BRIAN ROSS GORMAN;TIMOTHY BRIAN CONSIDINE;GRAHAM PHILIP DAVIES, zd=before_content}, {zdmc=变更后内容, zdmcdata=无, zd=after_content}, {zdmc=变更日期, zdmcdata=20171206, zd=change_date}, {zdmc=变更事项, zdmcdata=董事备案, zd=reg_item_gb}, {zdmc=信息类别, zdmcdata=登记类, zd=XXLB}, {zdmc=来源部门, zdmcdata=市工商行政管理局, zd=XXSSDW}], [{zdmc=变更前内容, zdmcdata=无, zd=before_content}, {zdmc=变更后内容, zdmcdata=2017-09-18章程备案, zd=after_content}, {zdmc=变更日期, zdmcdata=20171206, zd=change_date}, {zdmc=变更事项, zdmcdata=章程备案, zd=reg_item_gb}, {zdmc=信息类别, zdmcdata=登记类, zd=XXLB}, {zdmc=来源部门, zdmcdata=市工商行政管理局, zd=XXSSDW}]], tablename=变更信息}, {tabledata=[[{zdmc=备案日期, zdmcdata=2010/5/24, zd=A4}, {zdmc=企业备案号, zdmcdata=3100633346, zd=A3}, {zdmc=法定代表人, zdmcdata=Paul David considine, zd=A5}, {zdmc=信息类别, zdmcdata=登记类, zd=XXLB}, {zdmc=来源部门, zdmcdata=上海海关, zd=XXSSDW}]], tablename=自理报检单位备案}], resultZZL=null, resultWYL=null, resultGYL=null, resultZXL=null, resultJDL=[{tabledata=[[{zdmc=信用等级, zdmcdata=A, zd=A8}, {zdmc=信息类别, zdmcdata=监管类, zd=XXLB}, {zdmc=来源部门, zdmcdata=上海海关, zd=XXSSDW}]], tablename=信用ABCD级}, {tabledata=[[{zdmc=年检结果, zdmcdata=年检结果正常, zd=annlresult}, {zdmc=年检年度, zdmcdata=2009, zd=annlyear}, {zdmc=信息类别, zdmcdata=监管类, zd=XXLB}, {zdmc=来源部门, zdmcdata=市工商局, zd=XXSSDW}], [{zdmc=年检结果, zdmcdata=年检结果正常, zd=annlresult}, {zdmc=年检年度, zdmcdata=2010, zd=annlyear}, {zdmc=信息类别, zdmcdata=监管类, zd=XXLB}, {zdmc=来源部门, zdmcdata=市工商局, zd=XXSSDW}], [{zdmc=年检结果, zdmcdata=年检结果正常, zd=annlresult}, {zdmc=年检年度, zdmcdata=2011, zd=annlyear}, {zdmc=信息类别, zdmcdata=监管类, zd=XXLB}, {zdmc=来源部门, zdmcdata=市工商局, zd=XXSSDW}], [{zdmc=年检结果, zdmcdata=年检结果正常, zd=annlresult}, {zdmc=年检年度, zdmcdata=2012, zd=annlyear}, {zdmc=信息类别, zdmcdata=监管类, zd=XXLB}, {zdmc=来源部门, zdmcdata=市工商局, zd=XXSSDW}]], tablename=年检信息}], resultPJL=null}}\";\n";
JSONArray jsonArr = JSONArray.parseArray(a);
System.out.println(jsonArr);
}
public static String readFile(String path) throws Exception {
File file=new File(path);
FileInputStream fis = new FileInputStream(file);
FileChannel fc = fis.getChannel();
ByteBuffer bb = ByteBuffer.allocate(new Long(file.length()).intValue());
//fc向buffer中读入数据
fc.read(bb);
bb.flip();
String str=new String(bb.array(),"UTF8");
fc.close();
fis.close();
return str;
}
/**
* xml转json
* @param xmlStr
* @return
* @throws DocumentException
*/
public static JSONObject xml2Json(String xmlStr) throws DocumentException{
Document doc= DocumentHelper.parseText(xmlStr);
JSONObject json=new JSONObject();
dom4j2Json(doc.getRootElement(), json);
return json;
}
/**
* xml转json
* @param element
* @param json
*/
public static void dom4j2Json(Element element,JSONObject json){
//如果是属性
for(Object o:element.attributes()){
Attribute attr=(Attribute)o;
if(!isEmpty(attr.getValue())){
json.put("@"+attr.getName(), attr.getValue());
}
}
List<Element> chdEl=element.elements();
if(chdEl.isEmpty()&&!isEmpty(element.getText())){//如果没有子元素,只有一个值
json.put(element.getName(), element.getText());
}
for(Element e:chdEl){//有子元素
if(!e.elements().isEmpty()){//子元素也有子元素
JSONObject chdjson=new JSONObject();
dom4j2Json(e,chdjson);
Object o=json.get(e.getName());
if(o!=null){
JSONArray jsona=null;
if(o instanceof JSONObject){//如果此元素已存在,则转为jsonArray
JSONObject jsono=(JSONObject)o;
json.remove(e.getName());
jsona=new JSONArray();
jsona.add(jsono);
jsona.add(chdjson);
}
if(o instanceof JSONArray){
jsona=(JSONArray)o;
jsona.add(chdjson);
}
json.put(e.getName(), jsona);
}else{
if(!chdjson.isEmpty()){
json.put(e.getName(), chdjson);
}
}
}else{//子元素没有子元素
for(Object o:element.attributes()){
Attribute attr=(Attribute)o;
if(!isEmpty(attr.getValue())){
json.put("@"+attr.getName(), attr.getValue());
}
}
if(!e.getText().isEmpty()){
json.put(e.getName(), e.getText());
}
}
}
}
public static boolean isEmpty(String str) {
if (str == null || str.trim().isEmpty() || "null".equals(str)) {
return true;
}
return false;
}
}