四川德充建设集团有限公司网站,企业官网型网站模板下载,做微信的网站秀客,成免费的crm无需下载前言 本文只介绍使用 dom4j 以及fastjson的 方式#xff0c; 因为平日使用比较多。老的那个json也能转#xff0c;而且还封装好了XML#xff0c;但是本文不做介绍。 正文 ①加入 pom 依赖 dependencygroupIddom4j/groupIdartifactIddom4j…前言 本文只介绍使用 dom4j 以及fastjson的 方式 因为平日使用比较多。老的那个json也能转而且还封装好了XML但是本文不做介绍。 正文 ①加入 pom 依赖 dependencygroupIddom4j/groupIdartifactIddom4j/artifactIdversion1.6.1/version/dependency② 工具类 MyXmlUtil.java
import com.alibaba.fastjson.JSONArray;
import org.dom4j.*;
import org.springframework.util.StringUtils;
import java.util.List;/*** Author: JCccc* Date: 2022-6-15 16:53* Description:*/
public class MyXmlUtil {public static void main(String[] args) throws DocumentException {String xmlStrdependency\n groupIdorg.json/groupId\n artifactIdjson/artifactId\n version20180813/version\n /dependency;String xmlStrNewconfiguration\n settings\n setting name\useGeneratedKeys\ value\true\/\n setting name\useColumnLabel\ value\true\/\n setting name\mapUnderscoreToCamelCase\ value\true\/\n setting name\logImpl\ value\STDOUT_LOGGING\/\n /settings\n/configuration;if (StringUtils.hasLength(xmlStr)) {com.alibaba.fastjson.JSONObject jsonObject2 MyXmlUtil.documentToJSONObject(xmlStr);System.out.println(jsonObject2);}if (StringUtils.hasLength(xmlStrNew)) {com.alibaba.fastjson.JSONObject jsonObject2 MyXmlUtil.documentToJSONObject(xmlStrNew);System.out.println(jsonObject2);}}/*** org.dom4j.Document 转 com.alibaba.fastjson.JSONObject** param xml* return* throws DocumentException*/public static com.alibaba.fastjson.JSONObject documentToJSONObject(String xml) throws DocumentException {//加上xml标签是为了获取最外层的标签如果不需要可以去掉Document document DocumentHelper.parseText(xml xml /xml);return elementToJSONObject(document.getRootElement());}/*** org.dom4j.Element 转 com.alibaba.fastjson.JSONObject** param node* return*/public static com.alibaba.fastjson.JSONObject elementToJSONObject(Element node) {com.alibaba.fastjson.JSONObject result new com.alibaba.fastjson.JSONObject();// 当前节点的名称、文本内容和属性// 当前节点的所有属性的listListAttribute listAttr node.attributes();// 遍历当前节点的所有属性for (Attribute attr : listAttr) {result.put(attr.getName(), attr.getValue());}// 递归遍历当前节点所有的子节点// 所有一级子节点的listListElement listElement node.elements();if (!listElement.isEmpty()) {// 遍历所有一级子节点for (Element e : listElement) {// 判断一级节点是否有属性和子节点if (e.attributes().isEmpty() e.elements().isEmpty()) {// 沒有则将当前节点作为上级节点的属性对待result.put(e.getName(), e.getTextTrim());} else {if (!result.containsKey(e.getName())) {// 判断父节点是否存在该一级节点名称的属性// 没有则创建result.put(e.getName(), new JSONArray());}// 将该一级节点放入该节点名称的属性对应的值中((JSONArray) result.get(e.getName())).add(elementToJSONObject(e));}}}return result;}}运行一下main方法 看看效果 public static void main(String[] args) throws DocumentException {String xmlStrdependency\n groupIdorg.json/groupId\n artifactIdjson/artifactId\n version20180813/version\n /dependency;String xmlStrNewconfiguration\n settings\n setting name\useGeneratedKeys\ value\true\/\n setting name\useColumnLabel\ value\true\/\n setting name\mapUnderscoreToCamelCase\ value\true\/\n setting name\logImpl\ value\STDOUT_LOGGING\/\n /settings\n/configuration;if (StringUtils.hasLength(xmlStr)) {com.alibaba.fastjson.JSONObject jsonObject2 MyXmlUtil.documentToJSONObject(xmlStr);System.out.println(jsonObject2);}if (StringUtils.hasLength(xmlStrNew)) {com.alibaba.fastjson.JSONObject jsonObject2 MyXmlUtil.documentToJSONObject(xmlStrNew);System.out.println(jsonObject2);}}效果 {dependency:[{groupId:org.json,artifactId:json,version:20180813}]} { configuration: [ { settings: [ { setting: [ { name: useGeneratedKeys, value: true }, { name: useColumnLabel, value: true }, { name: mapUnderscoreToCamelCase, value: true }, { name: logImpl, value: STDOUT_LOGGING } ] } ] } ] } 好了该篇就到这。