iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > JAVA >Java 操作XML转JSON数据格式
  • 811
分享到

Java 操作XML转JSON数据格式

javaxmljson 2023-10-27 17:10:15 811人浏览 独家记忆
摘要

java操作XML文档转为JSON数据格式 一、使用的Maven依赖 org.dom4j dom4j 2.1.3 二

java操作XML文档转为JSON数据格式

一、使用的Maven依赖

            org.dom4j            dom4j            2.1.3        

二、代码实现

import com.alibaba.fastjson2.JSONArray;import com.alibaba.fastjson2.JSONObject;import com.ruoyi.common.utils.StringUtils;import org.dom4j.*;import org.dom4j.Document;import org.dom4j.Element;import org.dom4j.io.SAXReader;import java.io.*;import java.util.*;public class XMLParse  {    //文件路径    static String path = "D:\\DevelopWorkspace\\MY\\opensource-framework\\RuoYi-Vue\\doc\\DataSourceConfig.xml";    public static void main(String[] args) throws Exception {        //1、读取文件并转换为Document文档对象        Document doc = new SAXReader().read(new File(path));        //2、使用asXML()方法将DOM文档对象转换为字符串        String s = doc.asXML();        //3、调用自定义的方法转换为JSON数据格式        JSONObject jsonObject = startXMLToJSON(s);        //4、输出结果        System.out.println(jsonObject);    }        public static JSONObject startXMLToJSON(String xml){        //1、定义JSON对象保存结果        JSONObject result = new JSONObject();        try {            //2、使用DocumentHelper.parseText()转换为DOM文档对象            Document document = DocumentHelper.parseText(xml);            //3、获取DOM文档根节点            Element rootElement = document.getRootElement();            //4、调用自定义的方法转换为JSON数据格式            parseJson(rootElement,result);        } catch (DocumentException e) {            e.printStackTrace();        }        return result;    }    public static void parseJson(Element element,JSONObject result){        //1、获取子节点列表        List elements = element.elements();        //2、循环子节点列表获取数据        for (Element e:elements) {            //3、有数据则获取            if (!e.elements().isEmpty() && !e.getText().isEmpty()){                //4、定义另一个JSON对象保存子节点JSON数据                JSONObject cjson = new JSONObject();                //5、此处调用自身继续方法继续循环取值,知道遍历完所有字节点数据                parseJson(e,cjson);                if (!cjson.isEmpty()){                    //6、添加到JSON对象                    result.put(e.getName(),cjson);                }            }else {                if (!e.getText().isEmpty()){                    //6、添加到JSON对象                    result.put(e.getName(),e.getText());                }            }        }    } }

Debug流程源码解析

1、SAXReader加载XML文件,创建DOM文档对象

        //1、读取文件并转换为Document文档对象        Document doc = new SAXReader().read(new File(path));

①、调用SAXReader.read(File file)方法

阐述:
【注释意思】:从给定的文件参数中读取文档:
1、file–是要读取的文件。
2、返回:新创建的Document实例
3、抛出:DocumentException–如果在解析过程中发生错误
【执行步骤】:
1、使用new InputSource(new FileInputStream(file))获取文件输入流对象source
2、校验字符编码,此处并没有设置
3、file.getAbsolutePath()获取文件file的绝对路径
4、文件路径path不为空则统一文件路径的分隔符/
5、最后将文件输入流对象source作为参数调用read(source)方法

Reads a Document from the given FileParams:file – is the File to read from.Returns:the newly created Document instanceThrows:DocumentException – if an error occurs during parsing.public Document read(File file) throws DocumentException {        try {                         //1、使用new InputSource(new FileInputStream(file))获取文件输入流对象source            InputSource source = new InputSource(new FileInputStream(file));                        //2、校验字符编码,此处并没有设置            if (this.encoding != null) {                source.setEncoding(this.encoding);            }            //3、file.getAbsolutePath()获取文件file的绝对路径            String path = file.getAbsolutePath();//4、文件路径path不为空则统一文件路径的分隔符/            if (path != null) {                // Code taken from Ant FileUtils                StringBuffer sb = new StringBuffer("file://");                // add an extra slash for filesystems with drive-specifiers                if (!path.startsWith(File.separator)) {                    sb.append("/");                }                path = path.replace('\\', '/');                sb.append(path);                source.setSystemId(sb.toString());            }            //5、最后将文件输入流对象source作为参数调用read(source)方法            return read(source);        } catch (FileNotFoundException e) {            throw new DocumentException(e.getMessage(), e);        }    }

②调用read(InputSource in)方法

阐述:
【注释意思】:使用SAXParams从给定的InputSource读取文档:
1、in–要读取的InputSource。
2、返回:新创建的Document实例
3、抛出:DocumentException–如果在解析过程中发生错误。

public Document read(InputSource in) throws DocumentException {        try {            XMLReader reader = getXMLReader();            reader = installXMLFilter(reader);            EntityResolver thatEntityResolver = this.entityResolver;            if (thatEntityResolver == null) {                thatEntityResolver = createDefaultEntityResolver(in                        .getSystemId());                this.entityResolver = thatEntityResolver;            }            reader.setEntityResolver(thatEntityResolver);            SAXContentHandler contentHandler = createContentHandler(reader);            contentHandler.setEntityResolver(thatEntityResolver);            contentHandler.setInputSource(in);            boolean internal = isIncludeInternalDTDDeclarations();            boolean external = isIncludeExternalDTDDeclarations();            contentHandler.setIncludeInternalDTDDeclarations(internal);            contentHandler.setIncludeExternalDTDDeclarations(external);            contentHandler.setMergeAdjacentText(isMergeAdjacentText());            contentHandler.setStripWhitespaceText(isStripWhitespaceText());            contentHandler.setIgnoreComments(isIgnoreComments());            reader.setContentHandler(contentHandler);            configureReader(reader, contentHandler);            reader.parse(in);            return contentHandler.getDocument();        } catch (Exception e) {            if (e instanceof SAXParseException) {                // e.printStackTrace();                SAXParseException parseException = (SAXParseException) e;                String systemId = parseException.getSystemId();                if (systemId == null) {                    systemId = "";                }                String message = "Error on line "                        + parseException.getLineNumber() + " of document "                        + systemId + " : " + parseException.getMessage();                throw new DocumentException(message, e);            } else {                throw new DocumentException(e.getMessage(), e);            }        }    }

2、Document使用asXML()方法将DOM文档对象转换为字符串,该方法继承接口Node

阐述:
【注释意思】:
asXML返回该节点的文本XML表示。
1、返回:此节点的XML表示形式
2、接口返回数据类型:String
3、接口实现类 AbstractDocument
【执行步骤】:
1、使用OutputFORMat定义输出XML文件流格式
2、StringWriter作为字符串输出缓冲区
3、创建XMLWriter并输出对象
4、最后返回输出到StringWriter的字符串

String asXML();
public String asXML() {//1、使用OutputFormat定义输出XML文件流格式        OutputFormat format = new OutputFormat();                //2、定义编码格式,建议使用UTF-8        format.setEncoding(encoding);                try {        //3、创建StringWriter作为字符串输出缓冲区            StringWriter out = new StringWriter();                        //4、创建XMLWriter并输出对象            XMLWriter writer = new XMLWriter(out, format);            writer.write(this);            writer.flush();            //5、最后返回输出到StringWriter的字符串            return out.toString();        } catch (IOException e) {            throw new RuntimeException("IOException while generating textual "                    + "representation: " + e.getMessage());        }    }

2、DocumentHelper.parseText(String text)把字符串转换为DOM对象

阐述:
【注释意思】:
<code>parseText</code>将给定的文本解析为XML文档返回新创建的文档。param 1、text要解析的XML文本
2、返回一个新解析的文档
2、如果无法解析文档,则@throws DocumentException
【执行步骤】:
1、使用OutputFormat定义输出XML文件流格式
2、StringWriter作为字符串输出缓冲区
3、创建XMLWriter并输出对象
4、最后返回输出到StringWriter的字符串

        public static Document parseText(String text) throws DocumentException {        Document result = null;//1、创建SAXReader        SAXReader reader = new SAXReader();        //2、换取编码格式        String encoding = getEncoding(text);        //3、使用输入流读取需要解析的字符串文本        InputSource source = new InputSource(new StringReader(text));        //4、设置编码格式        source.setEncoding(encoding);//使用read(InputSource in)方法读取解析        result = reader.read(source);        // if the XML parser doesn't provide a way to retrieve the encoding,        // specify it manually        //如果XML解析器不提供检索编码的方法,手动指定        if (result.getXMLEncoding() == null) {            result.setXMLEncoding(encoding);        }        return result;    }

来源地址:https://blog.csdn.net/weixin_45467097/article/details/130515679

--结束END--

本文标题: Java 操作XML转JSON数据格式

本文链接: https://www.lsjlt.com/news/498028.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Java 操作XML转JSON数据格式
    java操作XML文档转为JSON数据格式 一、使用的maven依赖 org.dom4j dom4j 2.1.3 二...
    99+
    2023-10-27
    java xml json
  • 如何把xml格式数据转成json格式?
    xml格式数据转json格式 导入json依赖 //导入maven依赖 org.json json 20220320 传入需要转换的xml,返回对应的jso...
    99+
    2023-08-24
    json xml java
  • java将XML文档转换成json格式数据的示例
    本文介绍了java将XML文档转换成json格式数据的示例,分享给大家,具体如下:功能将xml文档转换成json格式数据说明依赖包: jdom-2.0.2.jar : xml解析工具包; fastjson-1.1.36.jar : 阿里...
    99+
    2023-05-30
    java xml json
  • Python Json数据格式的转换
    1.json:是一种轻量级的数据交互格式,采用完全独立于编程语言的文本格式来存储和表示数据。 Python语言使用JSON有很大的优势,因为JSON无非就是一个单独或一个内部元素都是字典的列表,所以JSON可以直接和Python的字典或列表...
    99+
    2023-09-30
    json
  • python3 json数据格式的转换(
    在写网络爬虫的时候,有时候会抓取到一些json格式的字符串,想要通过python字典的方式对字串中的内容进行寻址,则需要将json字符串先转换为python字典。 dumps()函数:  loads()函数: 示例: import ...
    99+
    2023-01-31
    数据格式 json
  • SQL Server怎么操作Json格式字段数据
    今天小编给大家分享一下SQL Server怎么操作Json格式字段数据的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后...
    99+
    2022-10-19
  • php如何获取数据转json数据格式
    小编给大家分享一下php如何获取数据转json数据格式,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!php获取数据转json数据格式的方法:首先连接数据库;然后执行“mysql_query($sql);”;最后通过“jso...
    99+
    2023-06-20
  • 【Python】-- python与json数据格式的转换
    什么是json? json是一种轻量级的数据交互格式,可以按照json指定的格式去组织和封装数据。 json主要功能 json是一种在各个编程语言中流通的数据格式,负责不同编程语言中的数据传递与交互。 json的作用 为了让不同的语言都能相...
    99+
    2023-08-31
    json python 开发语言
  • table表数据怎么转为Json格式
    小编给大家分享一下table表数据怎么转为Json格式,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!   <table&...
    99+
    2022-10-19
  • JS的Form表单转JSON格式的操作代码
    目录一、serialize()方法二、serializeArray()方法三、$.param()方法js 将json字符串转换为json对象的方法解析一、JSON字符串转换为JSON...
    99+
    2023-05-20
    js form表单转json格式 js form表单
  • python-将excel表格中的数据转化为json数据格式
    前言 excel表格中的数据,转化为json格式,再用程序去处理json数据,是常见的数据处理方式。这样可以实现按照需求去做数据处理。 需要用到的软件 除了python环境外,主要用到读取excel文...
    99+
    2023-09-02
    python excel json
  • php中怎么将数据转为json格式
    这篇文章主要讲解了“php中怎么将数据转为json格式”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“php中怎么将数据转为json格式”吧!一、json格式简介json全称为JavaScri...
    99+
    2023-07-05
  • php如何将数据转化为json格式
    本篇内容介绍了“php如何将数据转化为json格式”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!在php中,可以使用json_encode(...
    99+
    2023-06-30
  • golang中如何将数据转为json格式
    本文小编为大家详细介绍“golang中如何将数据转为json格式”,内容详细,步骤清晰,细节处理妥当,希望这篇“golang中如何将数据转为json格式”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。使用 Gola...
    99+
    2023-07-05
  • C#开发中如何处理XML和JSON数据格式
    C#开发中如何处理XML和JSON数据格式,需要具体代码示例在现代软件开发中,XML和JSON是广泛应用的两种数据格式。XML(可扩展标记语言)是一种用于存储和传输数据的标记语言,而JSON(JavaScript对象表示)是一种轻量级的数据...
    99+
    2023-10-22
    JSON xml 处理
  • html里table表数据怎么转为Json格式
    这篇文章主要介绍“html里table表数据怎么转为Json格式”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“html里table表数据怎么转为Json格式”文章能...
    99+
    2022-10-19
  • 聊聊如何用PHP将数据转成JSON格式
    在互联网的应用中,JSON (JavaScript Object Notation) 是一种常用的数据交换格式。在 PHP 开发中,将 PHP 数组转换成 JSON 格式是相当普遍的操作,因为 PHP 数组可以很方便地处理大量数据,而 JS...
    99+
    2023-05-14
  • 讨论golang中怎么将数据转为json格式
    随着互联网时代的到来,数据的传输和处理变得越来越重要。在现代软件开发过程中,处理数据的能力非常重要。Golang 语言作为一种现代的编程语言,具有很强的数据处理能力。其中,将 Golang 中的结构体转换为 JSON 格式非常常见。本文将讨...
    99+
    2023-05-14
    Golang go语言 json
  • Yolov5多边形标签和JSON数据格式转换
    目录Labelme简要介绍多边形标签的处理方法 转换后的txt格式如下:代码实现多边形标签代码实现方法Labelme简要介绍 通过labelme对图进行标注后,得到的是js...
    99+
    2023-05-18
    Yolov5 标签 Yolov5 JSON数据 Yolov5 格式转换
  • php如何将json数据转为字符串格式
    本文小编为大家详细介绍“php如何将json数据转为字符串格式”,内容详细,步骤清晰,细节处理妥当,希望这篇“php如何将json数据转为字符串格式”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。首先,我们需要获取...
    99+
    2023-07-06
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作