XML转成Json

XML格式转JSON格式 XML(可扩展标记语言)作为一种结构化标记语言,适合用于表示复杂层次结构的数据,具备自定义标签、属性和模式定义等特性。JSON(JavaScript对象表示)则是一种轻量级数据格式,以键值对的形式表示数据,广泛用于Web应用程序中。文章强调了了解这两种格式的优势和适用场景的重要性,以便在实际项目中做出明智的选择。无论您是开发人员、数据工程师还是系统架构师,对XML和JSON的理解都是关键的技能,有助于更好地满足不同项目的数据交换需求。 阅读详情
package com.guanqi.xml2json;

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 TestXml2Json {
    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());

    }

    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;
    }
}

Xml2Json:XML 到 Json xml2json XML 到 Json :: 手册 结构 小路 描述 / 有用于编译的批处理文件和用于 flex / yacc 的文件 /斌 有 flex 和 yacc 导轨 / 输出 构建结果在此处创建 /源 有 java 文件来支持那些由 flex / yacc 创建的文件 /测试 包含测试文件的目录 #我归档 文件 描述 xml2json.flex 代币定义 xml2json.y 语法定义 源代码/AST.java AST 数据结构的定义 源代码 / Main.java 入口点的定义 源代码/PrettyPrinter.java json中转换器的定义 描述 Main 读取文件作为输入并将其传递给解析器。 解析器使用词法分析器创建的标记。 解析器使用 AST.java 文件的数据结构构建抽象语法树 (AST)。一旦创建了 AST,主程序就会创建输出 json 文件并调用 立即下载

相关推荐

xml完美解析成json 亲测可用

一直苦恼xml转json,很多工具类支持,但是转换的效果都很差,一个偶然的时间,我找到这个资源,分享给大家,解析效果相当不错。 使用方法: //将xml转为json JSONObject xmlJSONObj = XML.toJSONObject(ret);

python实现Xml2json():将Xml文件加载并转化为json格式并保存的函数实现

python,xml,json

weixin_42326887的博客 889

PyTorch版Unet训练后别只看loss:手把手教你计算并可视化多类别语义分割的mIoU(附完整代码)

本文详细介绍了在PyTorch中使用Unet模型进行多类别语义分割后,如何计算和可视化mIoU(mean Intersection over Union)以全面评估模型性能。通过完整的代码示例和实用技巧,帮助开发者从loss优化转向更精准的区域分割评估,特别适用于医学图像分析等关键场景。

weixin_30906185的博客 435

【亲测免费】 XML2JSON - 将XML转换为JSON的轻量级工具

XML2JSON - 将XML转换为JSON的轻量级工具 在日常开发中,我们经常需要处理XML和JSON这两种数据格式。然而,它们之间的互操作并不总是那么顺畅。为了帮助开发者更加轻松地将XML转换成JSON,我们向您推荐这款叫做XML2JSON的开源项目。 项目简介 XML2JSON是一个轻量级、易于使用的工具,旨在将XML数据转换为JSON格式。它支持各种XML文档结构,并且可以自定义配置以满足...

gitblog_00005的博客 1321

别再为3D抓取发愁了!Halcon手眼标定保姆级教程(Eye-to-Hand模式,含完整代码)

本文提供Halcon手眼标定的保姆级教程,详细讲解Eye-to-Hand模式下的3D抓取实现方法。从硬件配置、坐标系系统到标定流程和核心算法,涵盖完整代码和实战经验,帮助用户快速掌握工业自动化中的精准抓取技术。

weixin_42523711的博客 270

Keil C51开发必看:详解data/xdata/bdata内存分配陷阱与避坑指南

本文深入解析Keil C51开发中的data/xdata/bdata内存分配陷阱,提供针对51芯片的高效避坑指南。通过真实案例揭示Keil编译器的隐藏规则,分享内存优化策略和调试技巧,帮助开发者解决data溢出、xdata访问异常等典型问题,提升嵌入式开发效率。

v6b7n8m9q0的博客 1072

将xml转成json c语言,JavaScript将XML转成JSON的方法

本文实例讲述了JavaScript将XML转成JSON的方法。分享给大家供大家参考。具体方法如下:1. JavaScript代码如下:// Changes XML to JSONfunction xmlToJson(xml) {// Create the return objectvar obj = {};if (xml.nodeType == 1) { // element// do attri...

weixin_27034523的博客 300

手把手教你实现阿克曼ROS小车的运动控制

本文详细介绍了如何从零开始实现阿克曼ROS小车的运动控制。内容涵盖硬件搭建、STM32底层PID速度与舵机控制、ROS层阿克曼运动学模型解析,以及上下位机通信协议设计。通过手把手的代码示例和调试步骤,帮助机器人爱好者与开发者掌握将高级速度指令转化为小车具体动作的全流程,实现流畅的阿克曼转向控制。

weixin_29193259的博客 199

java sql 查询数据自动转成xml_SqlServer将查询结果转换为XML和JSON

很久之前用到的,现在整理在这,里面一些代码来源于网上,不过有些bug已被我修改了。1.查询结果转XMLDECLARE @ParameterSQL NVARCHAR(MAX)='SELECT * FROM table';DECLARE @SQL NVARCHAR(MAX)DECLARE @XMLString VARCHAR(MAX)DECLARE @XML XMLDECLARE @Paramlist...

weixin_31316383的博客 576

LTspice 导入 PSpice 模型实战指南 --(解决语法兼容性与模型优化问题)

本文提供了将PSpice模型成功导入LTspice的详细实战指南。针对两者间的语法兼容性问题,文章以TI UCC23513为例,逐步讲解模型获取、符号创建、常见语法错误修改及仿真验证方法,并分享了模型优化与个人库管理技巧,帮助用户高效解决模型导入与仿真难题。

weixin_28278377的博客 821

RK3399平台开发系列讲解(内核入门篇)1.1、通过sysfs清楚了解设备的系统状况

文章目录1、不敢高声语,恐惊天上人:sysfs目的2、窥一斑而知全豹:sysfs目录介绍3、千丝万缕:sysfs中要素的关系4、数据观星:sysfs中相关结构体 1、不敢高声语,恐惊天上人:sysfs目的 我们想通过sys下面的目录和文件清楚的了解跑Liunx系统的嵌入式设备的系统状况。 2、窥一斑而知全豹:sysfs目录介绍 sysfs把连接在系统上的设备和总线组织成为一个分级的文件,它们可以由用户空间存取,向用户空间导出内核的数据结构以及它们的属性。sysfs的一个目的就是展示设备驱动模型中各组件.

内核笔记 1万+

将xml转成json c语言,把XML文件内容转成JSON串

public static String ConvertXMLtoJSON("f:/test.xml"){// 获取xml字符串String xml = getXMLString(filePath);// 序列化XMLSerializer xmlSerializer = new XMLSerializer();// 把xml内容转成jsonJSON json = xmlSerializer.rea...

weixin_32251525的博客 558

Ubuntu系统等保3级配置核查与加固

虽然这种方法在某些老旧的系统中仍然有效,但现代Linux发行版通常不推荐使用hosts.deny和hosts.allow文件来管理防火墙规则,因为它们的功能已经被更现代的防火墙管理工具(如iptables或firewalld)所取代。如果你想禁止特定的环境变量,可以从这个列表中移除它们,或者如果你想完全阻止所有环境变量的传递,可以将其设置为空。你可以通过ssh-keygen生成密钥对,并将公钥添加到用户的~/.ssh/authorized_keys文件中。修改配置后,需要重启SSH服务以使更改生效。

悦分享 183

使用python批量把Json文件转成xml文件

使用labelme制作数据集时,产生了json文件,如何把json文件转成所需的xml文件 每一张标好的图对应一个json文件,转成对应的xml文件 这是总的文件夹jsonToXml下包括两个文件夹 xmlDataSet JsonDataSet 这是xmlDataSet文件夹下包括的三个子文件夹 Annotations ImageSets JPEGImages 这...

陈依依的博客 6273

PCL 建筑物点云立面和平面分割提取【2025最新版】

在建筑物点云中,立面点和平面点的法向量存在明显的差异,根据法向量在Z方向的分量设置相应得阈值即可实现立面点与平面点的分割。

点云侠的博客 1962

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

xml格式数据转成json

如何将xml代码转成json格式的代码? 在这里,我才用的是引入xmltodict依赖包,用xmltodict来解决这个问题。 首先,安装xmltodict: pip install xmltodict==0.12.0 其次,样例xml解析成json演示: # -*- coding: utf-8 -*- import xmltodict import json a = ''' <Logon...

HADLM 1729

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

用DOM4J来把XML文件转成JSON对象

前面有两篇博客都是讲的用前端js把XML解析出来,今天采用java的dom4j来在后台解析一个XMl,并且转成json格式后传到前台。 xml文件还是原来用的那一个(前两篇博文用到的),所以直接上java解析的代码: package com.geoway.test; import java.io.File; import java.util.ArrayList; import java.ut

老杨的专栏 6480

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

labelme的json数据转成labelImg的xml数据

所有文件在json_to_xml文件夹中,共有三个python文件,分别包括main.py,create_xml_anno.py,read_json_anno.py。下面分别介绍这三个文件。 输入:由labelme的rectangle或这polygon方式标注生成的json文件; 输出:类似于labelImg的rectangle方式标注生成的xml文件,是左上角和右下角的坐标。 read...

mjiansun的专栏 7359

JavaScript将XML转成JSON的方法

上面的menu.json文件改成menu.xml文件后,这些代码需要改的什么?json转换成XML后,对应的JS文件要怎么改?

2747

Java中Json对象转成xml字符串

Java中Json转成xml 可读性 JSON和XML的可读性可谓不相上下,XML略占上风。 可扩展性 XML天生有很好的扩展性,JSON当然也有,没有什么是XML能扩展,JSON不能的。 编码难度 XML有丰富的编码工具,比如Dom4j、JDom等,JSON也有json.org提供的工具,但是JSON的编码明显比XML容易许多,即使不借助工具也能写出JSON的代码,可是要写好XML就不

u013714419的专栏 7820

PHP 将xml 转成json;

1.php将xml转成json;  $xml = simplexml_load_string($xmlStr); $json = json_encode($xml);  

pinming_sanlang1990的博客 1785

使用 JavaScript 将 XML 转成 JSON

1. [代码][JavaScript]代码 // Changes XML to JSON function xmlToJson(xml) { // Create the return object var obj = {}; if (xml.nodeType == 1) { // element // do attributes

xiaozaq的博客 626

把json文本转成xml举例

目的 把json文本转成xml文本表示         KJSonToXml.h #define BANK_ID             L"id" #define BANK_TEXT           L"text" #define BANK_CHILDREN       L"children" struct BankInfo

yi_ming_he的博客 1万+

【踩坑】XML转JSON中如何把单个元素转成数组

踩坑XML转JSON中如何把单个元素转成数组

许友运 6984

把XML文件内容转成JSON串

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34072458的博客 256

通过google的gson把xml转成json

通过google的gson把xml转成json

讨厌走开啦 6695
上一篇: docker安装启动报错:Error starting daemon: SELinux is not supported with the overlay2
下一篇: 根据当前系统的实时负载生成动态大小的线程池
木木那年
博客等级 码龄12年 37粉丝 36原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值