Java解析xml文档,判断对象是一个json是jsonArray还是jsonObject

有一篇xml文档,如下:
在这里插入图片描述
现在需要解析出其中的内容,首先需要明确的是,文档是由一个个的标签嵌套形成的,例如整个xml文件是由许多DescriptorRecord标签构成, <DescriptorRecord DescriptorClass = "1">xxxxxxxxxx</DescriptorRecord>

现在需要解析出每个DescriptorRecord 里面嵌套的xxxx各层级标签里面的内容,
导入的依赖有:

		<dependency><groupId>org.dom4j</groupId><artifactId>dom4j</artifactId><version>2.1.1</version></dependency><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.73</version></dependency>

解析代码如下:

 File file=new File("D:\\zoom\\字典相关\\desc2023\\test.xml");SAXReader saxReader = new SAXReader();Document doc = saxReader.read(file);JSONObject jsonObject = XmlUtil.xmlToJson(doc.asXML());

首先将文件读取并且解析为doc,再转成JSONObject对象,
再获取DescriptorRecord标签下的内容
在这里插入图片描述
可以看到,整个xml文档里面,有5个DescriptorRecord嵌套,
在这里插入图片描述
通过“content”这个key,获取下面的内容,解析出来是一个JSONObject对象,
有的时候一个标签嵌套的是一个JSONObject,有的时候是一个JSONArray,需要进行判断:if (treeNumberList.get("TreeNumber") instanceof JSONArray)
即对于treeNumberList获取key为TreeNumber是一个对象,还是一个数组,再进行取值。

在debug的时候,结合xml格式,来判断下一步是怎么取值,

在这里插入图片描述

fastjson的用法如下:

获取JSONObject 对象

JSONObject content = pubmed.getJSONObject("content");

获取数组对象

JSONArray treeNumber = treeNumberList.getJSONArray("TreeNumber");

通过String这个key来取值

 String termName2 = content3.getString("String");

通过Term来获取对象

termList.get("Term")

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/316205.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

rk3588中编译带有ffmpeg的opencv

有朋友有工程需要&#xff0c;将视频写成mp4&#xff0c;当然最简单的方法当然是使用opencv的命令 cv::VideoWriter writer;bool bRet writer.open("./out.mp4", cv::VideoWriter::fourcc(m, p, 4, v), 15, cv::Size(640, 512), 1); 但是奈何很难编译成功&#xff…

MT8766安卓核心板规格参数_MTK8766核心板模块方案定制

MT8766安卓核心板&#xff1a;高性能、稳定可靠、集成度高的一体化解决方案 MT8766安卓核心板采用联发科MTK8766四核4G模块方案&#xff0c;是一款高度集成的安卓一体板。四核芯片架构&#xff0c;主频可达到2.0GHz&#xff0c;支持国内4G全网通。12nm制程工艺&#xff0c;支持…

【运维】yarn高可用配置详解

文章目录 一. 架构1. RM故障转移( Failover)1.1. 手动切换故障转移1.2. 自动故障转移1.3. RM故障转移的客户端&#xff1a;ApplicationMaster和NodeManager 2. 恢复以前的活动RM的状态 二、部署方式1. 配置说明2. 配置实例3. Admin commandsa. 检查状态b. 手动切换主备 本文主要…

VS2017 搭建opencv工程

VS2017 搭建opencv工程 opencv在处理图像方面具有很强的能力&#xff0c;在使用opencv之前先需要造好轮子。 1、opencv 官网 &#xff0c;下载对应的资源文件包。 根据自身选择。下载包之后&#xff0c;解压。分为build和sources source目录下分别存放&#xff1a; modules: …

Mysqld的关键优化参数

skip-name-resolve 现象 mysql连接很慢&#xff0c;登陆到服务器上查看服务器日志都是正常的&#xff0c;无可疑记录&#xff0c;登陆到mysql服务器上&#xff0c;查看下进程&#xff0c;发现有很多这样的连接&#xff1a; 218 | unauthenticated user | 192.168.10.6:44500 |…

el-radio-button自适应充满盒子的写法

业务场景&#xff1a;当盒子较宽时&#xff0c;希望 el-radio-button 自适应充满盒子。 el-radio-button 自适应充满盒子的写法 <el-form :inline"true" :model"searchForm"><el-form-item style"display: flex; align-items: center;"…

CSS animation动画和关键帧实现轮播图效果HTML

CSS animation动画和关键帧实现轮播图效果HTML 这轮播图效果使用h5和css3实现效果&#xff0c;不需要js控制&#xff0c;但是其中的缺点就是不能使用鼠标进行切换效果。 具有代码如下 <!DOCTYPE html> <html lang"en"><head><meta charset&quo…

软件工程期末总结

软件工程期末总结 软件危机出现的原因软件生命周期软件生命周期的概念生命周期的各个阶段 软件开发模型极限编程 可行性研究与项目开发计划需求分析结构化分析的方法结构化分析的图形工具软件设计的原则用户界面设计结构化软件设计面向对象面向对象建模 软件危机出现的原因 忽视…

贵州贵阳二手房数据集可视化大屏全屏系统毕业设计应用

博主介绍&#xff1a;黄菊华老师《Vue.js入门与商城开发实战》《微信小程序商城开发》图书作者&#xff0c;CSDN博客专家&#xff0c;在线教育专家&#xff0c;CSDN钻石讲师&#xff1b;专注大学生毕业设计教育和辅导。 所有项目都配有从入门到精通的基础知识视频课程&#xff…

Python入门第09篇(conda虚拟环境)

前言 一开始默认安装了最新的Python3.12&#xff0c;搞的倒也顺手&#xff0c;看别人会有不兼容的问题&#xff0c;在我这开始没出现。不过坑总会踩到的&#xff0c;这不就出问题了。pip install一个包一直不行&#xff0c;问了下度娘&#xff0c;说由于这个包使用了一些新技术…

yolov5 损失函数

yolov5有三个损失函数分别是回归损失、置信度损失、分类损失 回归损失用的是CIOU loss 置信度和分类损失用的是BCE loss &#xff08;1&#xff09;对比L2损失&#xff0c;Iou和GIou具有尺度不变性&#xff0c;不会说输入的框子大loss就越大。 &#xff08;2&#xff09;对比…

OpenGL纹理转换谜团:纹理写入FRAMEBUFFER后的镜像现象

在OpenGL中&#xff0c;最近将一个 GL_TEXTURE_2D 纹理写入到 GL_FRAMEBUFFER &#xff0c;然后从GL_FRAMEBUFFER读取为GL_TEXTURE_2D纹理后&#xff0c;发现GL_TEXTURE_2D纹理变为了输入纹理的镜像纹理。效果图如下图所示。 本文将探讨这个问题的原因&#xff0c;并提出两种解…