XmlUtil 工具类提供读写 xml
maven
1 2 3 4 5
| <dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>5.3.5</version> </dependency>
|
读取 XML 文件
1 2
| Document document = XmlUtil.readXML("/Users/mac126/Desktop/text.xml"); String xml = XmlUtil.toStr(document);
|
org.json
xml 字符串转 JSONObject
Maven
1 2 3 4 5
| <dependency> <groupId>org.json</groupId> <artifactId>json</artifactId> <version>20160212</version> </dependency>
|
Xml 字符串转 JSONObject
1 2 3 4 5
| //xml 为 字符串 JSONObject jsonObject = XML.toJSONObject(xml);
//Organization 为根元素,获取其子元素内容 String organization = jsonObject.get("Organization").toString();
|
问题
json 字符串中有些 key 对应的 value 既可能为 json 也可能为 jsonarray,需要统一转换为jsonarray,才能转换到 javabean
获取 jsonstring
1 2
| ////object 为 JSONObject String department = object.get("Device").toString();
|
string 前后加中括号得到 newstring:"[" + string + "]"
newstring 转 jsonarray
1 2 3 4
| //department 为原 json 字符串 if(!"".equals(department) && department.startsWith("{")) { object.put("Device", JSON.parseArray("[" + department + "]")); }
|
其它工具
net.sf.json
标签的属性会加上前缀 @符号
代码
1 2 3
| XMLSerializer xmlSerializer = new XMLSerializer(); JSON json = xmlSerializer.read(xml); System.out.println(json);
|
xml 示例
1 2 3 4
| <student name="zhangsan"> <sex>man</sex> <age>18</age> </student>
|
转换后
1
| {"@name":"zhangsan","sex":"man","age":"18"}
|
示例参考
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
| JSONObject jsonObject_Organization = XML.toJSONObject(xml); String organization = jsonObject_Organization.get("Organization").toString(); com.alibaba.fastjson.JSONObject jsonObject = JSON.parseObject(organization);
String devices = jsonObject.get("Devices").toString(); com.alibaba.fastjson.JSONObject jsonObject_devices = JSON.parseObject(devices); String device = jsonObject_devices.get("Device").toString(); deviceList = JSON.parseArray(device, Device.class); for (Device d : deviceList) { deviceMap.put(d.getId(), d); }
String department = jsonObject.get("Department").toString(); com.alibaba.fastjson.JSONObject jsonObject_department = JSON.parseObject(department);
String department_root_str = jsonObject_department.get("Department").toString(); com.alibaba.fastjson.JSONObject department_root_jsonobject = JSON.parseObject(department_root_str);
String department_child = department_root_jsonobject.get("Department").toString(); JSONArray objects = JSON.parseArray(department_child); for (int i = 0; i < objects.size(); i++) { com.alibaba.fastjson.JSONObject object = objects.getJSONObject(i); if (object.get("Department") != null) { String department1 = object.get("Department").toString(); if(!"".equals(department1) && department1.startsWith("{")) { object.put("Department", JSON.parseArray("[" + department1 + "]")); } } if (object.get("Device") != null) { String department1 = object.get("Device").toString(); if(!"".equals(department1) && department1.startsWith("{")) { object.put("Device", JSON.parseArray("[" + department1 + "]")); } } if (object.get("Channel") != null) { String department1 = object.get("Channel").toString(); if(!"".equals(department1) && department1.startsWith("{")) { object.put("Channel", JSON.parseArray("[" + department1 + "]")); } } }
department_root_jsonobject.put("Department", objects); Department department_root = JSON.parseObject(department_root_jsonobject.toJSONString(), Department.class);
all.addAll(getVideoListFromDepartment(department_root));
List<Department> department1 = department_root.getDepartment(); for (Department d : department1) { all.addAll(getVideoListFromDepartment(d));
List<Department> department2 = d.getDepartment(); if(department2 != null && department2.size() > 0) { for (Department department3 : department2) { all.addAll(getVideoListFromDepartment(department3)); } } }
|