【工具类】Java优雅的将XML转为JSON格式、XML转JSON

news/2024/9/20 7:05:42/ 标签: java, xml, json
xmlns="http://www.w3.org/2000/svg" style="display: none;">

Java优雅的将XML转为JSON格式、XML转JSON

  • 1. 导入依赖
    • 1.1 Maven使用
    • 1.2 Gradle使用
  • 2. 代码编写
  • 3.运行示例

1. 导入依赖

1.1 Maven使用

xml"> 		<dependency><groupId>org.dom4j</groupId><artifactId>dom4j</artifactId><version>2.1.3</version></dependency><dependency><groupId>org.json</groupId><artifactId>json</artifactId><version>20210307</version></dependency>

1.2 Gradle使用

json">dependencies {implementation("org.dom4j:dom4j:2.1.3")implementation("org.json:json:20210307")
}

2. 代码编写

java">package com.xcc.utils;import com.xcc.pojo.vo.invoice.EInvoice;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.io.SAXReader;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.Iterator;public class XmlToJsonUtils {public static JSONObject convertToJSON(String xml) throws DocumentException, JSONException {Document document = new SAXReader().read(xml);return parseDocument(document.getRootElement());}private static JSONObject parseDocument(org.dom4j.Element element) throws JSONException {JSONObject json = new JSONObject();Iterator children = element.elementIterator();while (children.hasNext()) {org.dom4j.Element child = (org.dom4j.Element) children.next();if (child.isTextOnly()) {json.put(child.getName(), child.getText());} else {JSONObject childJson = parseDocument(child);if (json.has(child.getName())) {Object existingObject = json.get(child.getName());if (existingObject instanceof JSONObject) {json.accumulate(child.getName(), childJson);} else if (existingObject instanceof org.json.JSONArray) {((org.json.JSONArray) existingObject).put(childJson);}} else {json.put(child.getName(), childJson);}}}return json;}public static void main(String[] args) throws Exception {JSONObject json = convertToJSON("https://csdn.net/xxx.xml");System.out.println(json.toString(2)); // 2 is the indent factor}
}

在这里插入图片描述
注:可以根据不同的业务场景来进行选择 提供URL 直接读取和File文件及InputStream流数据等

3.运行示例

在这里插入图片描述


http://www.ppmy.cn/news/1514347.html

相关文章

《计算机操作系统》(第4版)第4章 存储器管理 复习笔记

第4章 存储器管理 一、存储器的层次结构 1. 多层结构的存储器系统 如图4-1所示&#xff0c;在存储层次中越往上&#xff0c;存储介质的访问速度越快&#xff0c;价格也越高&#xff0c;相对存储容量也越小。 图4-1 计算机系统存储层次示意 2.三级存储系统 (1)Cache- 主存存储体…

linux下搭建MySQL8.0.25一主一从

一、主从复制概述 1.1、概述 主从复制是指将主数据库的 DDL 和 DML 操作通过二进制日志传到从库服务器中&#xff0c;然后在从库上对这些日志重新执行&#xff08;也叫重做&#xff09;&#xff0c;从而使得从库和主库的数据保持同步。 MySQL支持一台主库同时向多台从库进行…

AI大模型开发——7.百度千帆大模型调用

本节旨在为读者提供一个实用指南&#xff0c;探讨如何有效地利用百度千帆大模型平台的强大功能。从基础的账号注册和密钥申请入手&#xff0c;逐步引领用户通过案例&#xff0c; 理解并掌握如何调用文本和图像处理的大模型 API&#xff0c; 包括但不限于 NLP、对话生成、文本续…

windows bash获取一个目录下所有的文件

在Windows系统中&#xff0c;我们可以使用命令行工具来获取文件夹下的所有文件名。具体操作如下&#xff1a; 1. 打开命令提示符&#xff08;WinR&#xff0c;输入cmd&#xff0c;回车&#xff09;&#xff1b; 2. 进入需要提取文件名的文件夹&#xff08;使用cd命令&#xf…

sqlilabs less16-20关手工注入

第16关 一.判断闭合方式 闭合方式点“&#xff09; admin")and11# 二.判断数据库长度 admin") and if(length(database())>7, 0, sleep(5))# 页面无延迟 admin") and if(length(database())>8, 0, sleep(5))# 页面有延迟说明数据库长度为8 三.判断数…

spark全面个人总结(20个面试点)非网文

1. 请简述Spark的工作原理和架构&#xff1f; 基于RDD&#xff0c;一种数据结构&#xff0c;含数据项、处理函数、血缘。spark解析任务&#xff0c;生成rdd&#xff0c;并将系列rdd转换成一系列物理计划&#xff0c;然后发送到集群上的各个节点执行。spark负责管理这些任务&a…

UV LED供电为什么要选择使用恒流驱动电源

LED为何一定要恒流供电? 在讨论此议题之前&#xff0c;什么是电源的恒流恒压&#xff1f; 什么是电源的恒流恒压   恒流&#xff0c;就是输出电流是恒定的&#xff0c;但电源电流却不是固定的&#xff0c;标称的电压只是安全上限&#xff1b;恒压&#xff0c;就是输出电压是…

Mysql varchar的最大值到底有多少

MySQL中varchar类型的最大值受到多个因素的影响&#xff0c;包括MySQL的版本、字符集以及行的其他字段配置。以下是对varchar最大值的一个详细解析&#xff1a; 1. MySQL版本差异 MySQL 4.1及以前版本&#xff1a;varchar的最大长度限制为255字节。MySQL 5.0及以后版本&#…

Ps:首选项 - 图像处理

Ps菜单&#xff1a;编辑/首选项 Edit/Preferences 快捷键&#xff1a;Ctrl K Photoshop 首选项中的“图像处理” Image Processing选项卡让用户可以根据当前工作任务的需要&#xff0c;在处理速度和结果的精细度之间找到平衡。这些设置可以帮助优化 Photoshop 的处理性能&…

STM32f407 网络接收 fpga 的 bin 文件并更新到 fpga series7(2)

STM32f407 网络接收 fpga 的 bin 文件并更新到 fpga series7(2) 简介 实验 2&#xff1a;在单片机搭建好 tcp 服务器后&#xff0c;编写传送文件的上位机。 整体实现 - 利用qt的tcpsocket简单封装 - 每次发送512字节&#xff0c;这样小的tcp包就不会自动分包。保证每一个51…

无人驾驶,并非无人之地

图片&#xff5c;Photo by 萝卜快跑 ©自象限原创 作者丨罗辑 老司机又双叒叕被“抢”了&#xff1f; 随着武汉无人驾驶的Robotaxi在各社交媒体平台出圈&#xff0c;自动驾驶安全员的职业从幕后走向台前&#xff0c;近期&#xff0c;招聘平台信息也显示&#xff0c;萝卜…

React Native中好用的UI组件库

文章目录 前言1.React Native ElementsStar数超24K地址 2.React Native UI KittenStar数超20K地址 3.NativeBaseStar数超20K地址 前言 下面是React Native中一些常用的UI库 1.React Native Elements Star数超24K 官方介绍 React Native Elements 的目标是提供一套用于在 Rea…

wpf DataTemplate 和 ControlTemplate 区别,应用举例

在WPF中&#xff0c;模版&#xff08;ControlTemplate &#xff09; ControlTemplate用于定义控件的内部结构和外观&#xff0c;它决定了控件的“长成什么样子”&#xff0c;并允许开发者在控件原有的内部逻辑基础上扩展自己的逻辑。DataTemplate则专注于数据内容的展示方式&am…

Parallels Desktop 19 for Mac 安装虚拟机需要激活吗

Parallels Desktop 19 for Mac 乃是一款适配于 Mac 的虚拟化软件。它能让您在 Mac 计算机上同时运行多个操作系统。您可借此创建虚拟机&#xff0c;并于其中装设不同的操作系统&#xff0c;如 Windows、Linux 或 macOS。使用 Parallels Desktop 19 mac 版时&#xff0c;您可在 …

【Docker】gitea的ssh容器直通

本文首发于 ❄️慕雪的寒舍 1.跟着文档走 gitea的安装比较简单&#xff0c;直接使用官方文档中的docker-compose文件即可。如果想实现ssh容器直通&#xff0c;需要对这个docker-compose文件做一定修改。 如果你还没有安装docker&#xff0c;参考本站教程 linux安装docker&…

手机麻将APP开发违法吗,有哪些注意的地方呢?

在我的职业生涯中&#xff0c;我处理过许多因开发或运营手机游戏而遭遇法律处罚的案例。游戏作为一种传统的娱乐形式&#xff0c;在中国拥有广泛的受众。然而&#xff0c;随着智能手机的普及&#xff0c;手机游戏的开发和运营逐渐成为热门领域&#xff0c;但其中也存在不少法律…

c++链表(list)

前言 链表作为一个常见的数据结构&#xff0c;在高频插入删除的场景下有独特的优势&#xff0c;在内存的使用上也极少有浪费可以按需申请。今天我们就来简单的学习一下这种数据结构&#xff0c;链表也有很多不同的实现&#xff0c;我们这里和标准库保持一致&#xff0c;实现带…

docker手动部署django项目Dockerfile编排-后端发布

1、首先创建一个桥接网络 docker network create auto 2、部署redis,提供celery的消息队列服务 docker run --name redis --restartalways -d --network auto -v redis:/data redis:alpine3、部署数据库 注意数据库账号密码 docker run --name mariadb --restartalways -d…

远程消息传递的艺术:NSDistantObject在Objective-C中的妙用

标题&#xff1a;远程消息传递的艺术&#xff1a;NSDistantObject在Objective-C中的妙用 引言 在Objective-C的丰富生态中&#xff0c;NSDistantObject扮演着至关重要的角色&#xff0c;特别是在处理分布式系统中的远程消息传递。它允许对象之间跨越不同地址空间进行通信&…

基于矢量控制器的PMSM永磁同步电机速度控制系统simulink建模与仿真

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 5.完整工程文件 1.课题概述 基于矢量控制器的PMSM永磁同步电机速度控制系统simulink建模与仿真&#xff0c;仿真输出电机转速跟踪曲线&#xff0c;PID控制器输出曲线以及Te输出曲线。 2.系统仿真结果 &…