java 解析 xml 字符串转换为实体,实体转换为 xml 字符串

java 解析 xml 字符串转换为实体,实体转换为 xml 字符串

1. XmlCommonUtil工具类代码如下:
import javax.xml.bind.JAXBContext;
import javax.xml.bind.Marshaller;
import javax.xml.bind.Unmarshaller;/*** XmlCommonUtil类用于XML字符串和对象之间的转换以及读取文件操作*/
public class XmlCommonUtil {/*** 将XML字符串转换为指定类的对象** @param xml   XML字符串* @param clazz 目标类的Class对象* @return 转换后的对象*/public static Object convertXmlStrToObject(String xml, Class clazz) throws Exception {JAXBContext context = JAXBContext.newInstance(clazz);Unmarshaller unmarshaller = context.createUnmarshaller();StringReader reader = new StringReader(xml);return unmarshaller.unmarshal(reader);}/*** 将实体对象转换为XML字符串** @param obj 实体对象* @return 转换后的字符串*/public static String convertObjectToXml(Object obj) throws Exception {StringWriter sw = new StringWriter();JAXBContext context = JAXBContext.newInstance(obj.getClass());Marshaller marshaller = context.createMarshaller();marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);marshaller.marshal(obj, sw);return sw.toString();}
}

2. 模拟资源文件数据SqlList.xml:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<sqls><sql>SELECT 1WHERE 1 = 1</sql><sql>SELECT 2WHERE 2 = 2</sql>
</sqls>

3. 实体类SqlXml代码如下:
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;
/*** SqlXml类用于表示XML中的sql元素*/
@XmlRootElement(name = "sqls")
@XmlType(propOrder = {"sql"})
public class SqlXml {private List<String> sql;@XmlElement(name = "sql")public List<String> getSql() {return sql;}public void setSql(List<String> sql) {this.sql = sql;}@Overridepublic String toString() {return "SqlXml{" +"sql=" + sql +'}';}
}

4. main方法代码测试:
    public static void main(String[] args) throws Exception{// 读取指定文件中的XML内容String xmlStr = readFile("sql/SqlList.xml");// 将XML字符串转换为SqlXml对象SqlXml sqlXml = (SqlXml)convertXmlStrToObject(xmlStr, SqlXml.class);System.out.println(sqlXml);// 将SqlXml对象转换为XML字符串xmlStr = convertObjectToXml(sqlXml);System.out.println(xmlStr);}/*** 读取指定文件并返回文件内容** @param file 文件路径* @return 文件内容字符串*/public static String readFile(String file) {StringBuffer sb = null;try {InputStream inputStream = Thread.currentThread().getContextClassLoader().getResourceAsStream(file);BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));sb = new StringBuffer();String line = "";while ((line = bufferedReader.readLine()) != null) {sb.append(line + "\r\n");}bufferedReader.close();} catch (Exception e) {e.printStackTrace();}return sb.toString();}

5. 执行结果:
SqlXml{sql=[SELECT 1WHERE 1 = 1, SELECT 2WHERE 2 = 2]}
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<sqls><sql>SELECT 1WHERE 1 = 1</sql><sql>SELECT 2WHERE 2 = 2</sql>
</sqls>Process finished with exit code 0

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

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

相关文章

从零开始,如何成功进入IT行业?

0基础如何进入IT行业&#xff1f; 简介&#xff1a;对于没有任何相关背景知识的人来说&#xff0c;如何才能成功进入IT行业&#xff1f;是否有一些特定的方法或技巧可以帮助他们实现这一目标&#xff1f; 在当今数字化时代&#xff0c;IT行业无疑是一个充满活力和机遇的领域。…

Linux服务器疑似被入侵

随着开源产品的越来越盛行&#xff0c;作为一个Linux运维工程师&#xff0c;能够清晰地鉴别异常机器是否已经被入侵了显得至关重要&#xff0c;个人结合自己的工作经历&#xff0c;整理了几种常见的机器被黑情况供参考。 背景信息&#xff1a;以下情况是在CentOS 6.9的系统中…

Leetcode 56. 合并区间和Leetcode 240. 搜索二维矩阵 II

文章目录 Leetcode 56. 合并区间题目描述C语言题解和思路解题思路 Leetcode 240. 搜索二维矩阵 II题目描述C语言题解和思路解题思路 Leetcode 56. 合并区间 题目描述 以数组 intervals 表示若干个区间的集合&#xff0c;其中单个区间为 intervals[i] [starti, endi] 。请你合…

mac上如何安装python3

mac上如何安装python3&#xff1f; 安装homebrew 在终端执行命令 /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" 执行完成后&#xff0c;homebrew和pip等工具就自动安装好了。 接下来安装python3.在终端…

C++生成随机数游戏

// 添加随机种子&#xff0c;作用&#xff1a;利用当前系统时间生成随机数&#xff0c;防止每次随机数都一样 srand((unsigned int)time(NULL)); #include <stdio.h> #include <windows.h> #include <iostream> #include <ctime> using namespace std;…

鸿蒙OS开发实例:【Native C++】

介绍 本篇Codelab主要介绍如何使用DevEco Studio创建一个Native C应用。应用采用Native C模板&#xff0c;实现使用NAPI调用C标准库的功能。使用C标准库hypot接口计算两个给定数平方和的平方根。在输入框中输入两个数字&#xff0c;点击计算结果按钮显示计算后的数值。 相关概…

Input Event Daemon:增强Linux输入设备的交互体验

在Linux系统中&#xff0c;设备之间的交互常常需要一些后台进程来监控并响应不同的输入事件&#xff0c;例如键盘按键、鼠标点击或系统唤醒信号。Input Event Daemon&#xff08;简称IED&#xff09;是一个用于Linux的后台服务程序&#xff0c;用以监听来自输入设备的事件&…

lanqiao.602 迷宫

题目&#xff1a; 代码&#xff1a; #include<iostream> #include<cstring> #include<algorithm> #include<queue> using namespace std; char mp[31][51]; //稍微开大一点 char k[4]{D,L,R,U}; //按字典序记录路径 int dirx[]{1,0,0,-1},d…

学习ArkTS -- 常用组件使用

学习ArkTS 使用Deveco studio写ArkTSImage: 图片显示组件1.声明Image组件并设置图片源2. 添加图片属性 Text: 文本显示组件1. 声明Text组件并设置文本内容2. 添加文本属性 TextInput&#xff1a;文本输入框1. 声明TextInput2. 添加属性和事件 Button 组件1. 声明Button组件&…

Linux命令-dpkg-reconfigure命令(Debian Linux中重新配制一个已经安装的软件包)

说明 dpkg-reconfigure命令 是Debian Linux中重新配置已经安装过的软件包&#xff0c;可以将一个或者多个已 安装的软件包传递给此指令&#xff0c;它将询问软件初次安装后的配置问题。 当用户需要再次对软件包配置的时候&#xff0c;可以使用dpkg-reconfigure命令来对指定的软…

关于“使用java中的二维矩阵方法生成二维码“ 以及 “Java加载外部字体文件时出错的原因“

生成二维码 铁铁们,这两日写了一个导出二维码的接口,要求有一个是在二维码下方生成字体,现在奉上生成二维码的代码: controller层 Operation(summary "导出机构二维码",description "导出机构二维码")GetMapping("/orgCode")public void getO…

scipy beta分布与numpy clip的数值问题

[1] 用到混合 Beta 分布&#xff0c;估计参数的方法见 [2]。由 [3] 可见 Beta 分布在其参数 α , β \alpha,\beta α,β 在不同取值范围时存在几种形态&#xff1a; α , β < 0 \alpha,\beta < 0 α,β<0&#xff1a;不合法&#xff1b; α β 1 \alpha\beta1 α…

2024年华为OD机试真题-最大N个数与最小N个数的和-Java-OD统一考试(C卷)

题目描述: 给定一个数组,编写一个函数来计算它的最大N个数与最小N个数的和。你需要对数组进行去重。 说明: 数组中数字范围[0, 1000] 最大N个数与最小N个数不能有重叠,如有重叠,输入非法返回-1 输入非法返回-1 输入描述: 第一行输入M, M标识数组大小\n第二行输入M个数,标…

Java-Doc

Java-Doc javdoc命令是用来生成自己的API文档的 参数信息&#xff1a;author作者名version版本号since知名需要最早使用的jdk版本param参数名return返回值情况throws异常抛出情况 1.参数信息的使用&#xff1a; 未完待续... ...

PHP 图片裁剪类封装

PHP工具类 图片裁剪类封装 <?php namespace App\Utils;/*** 图片裁剪工具类* author 田小涛* date 2020年7月23日* comment**/ class ImageCropUtils {private $sImage;private $dImage;private $src_file;private $dst_file;private $src_width;private $src_height;priv…

2024山东大健康展会,济南生物医药展,中国医疗健康展

——中国&#xff08;济南&#xff09;国际大健康产业博览会China&#xff08;Jinan&#xff09;International Big Health Industry Expo&#xff08;China-DJK山东健博会&#xff09;&#xff0c;聚焦企业招商和宣传的定位&#xff0c;立足于济南新旧动能转换起步区&#xff…

HashMap部分底层源码解析

哈希表的物理结构 HashMap底层都是哈希表&#xff08;也称散列表&#xff09;&#xff0c;线程不安全&#xff0c;其中维护了一个长度为2的幂次方的Entry类型的数组table&#xff0c;数组的每一个索引位置被称为一个桶(bucket)&#xff0c;你添加的映射关系(key,value)最终都被…

腾讯云向量数据库-RAG介绍

1.说明 RAG结合LLM(通用大预言模型)构件基于私有文档、专业领域知识、实时信息的charbot。 2.RAG的主要步骤 知识切片成chunk向量化chunk入库query检索知识chunk构件prompts调用llm生成回答 3.优势 快速构件demo快速理解rag社区支持 4.痛点 投入大效果差调优难 5.RAG应…

结合SOCKS5代理、代理IP与网络安全促进跨界电商和游戏产业发展

一、引言 在全球化的大背景下&#xff0c;数字技术的应用已成为企业出海战略的重要组成部分。尤其是在跨界电商和游戏行业&#xff0c;通过有效利用SOCKS5代理、代理IP和网络安全技术&#xff0c;不仅可以突破地域限制&#xff0c;还能保障数据的安全和用户的隐私。本文旨在探讨…

一、flask入门和视图

run启动参数 模板渲染 后端给前端页面传参 前端页面设置css from flask import Flask, render_template,jsonify# 创建flask对象 app = Flask(__name__)# 视图函数 + 路由route @app.route("/") def hello_world():# 响应,返回给前端的数据return "hello worl…