JAXB解析与生成XML

XML和Bean相转——JaxbUtils工具类 package com.lmp.utils; import javax.xml.bind.JAXBContext; import javax.xml.bind.JAXBException; import javax.xml.bind.Marshaller; import javax.xml.stream.XMLInputFactory; import javax.xml.stream.XMLStreamException; import javax.xml.stream.XMLStreamReader; 阅读详情

常用注解
@XmlRootElement(name = “report”)
将Java类或枚举类型映射成XML中根元素,设置name属性的值可指定义根元素名称,不设置则默认为类型首字母小写的名称。

@XmlType(propOrder = {“rmsId”, “department”, “userId”, “userName”,“reason”,“time”,“conclusion”,“attachList”})
将Java类后枚举类型映射到XML模式类型,设置propOrder可以指定生成XML中各元素的先后顺序。

@XmlElement(name=“attach”)
将JavaBean中的字段值映射到XML元素,设置name属性的值可指定XML元素的名称。

@XmlAttribute(name = “”, required = false)
将JavaBean中的字段映射到XML中元素的属性,设置name属性的值可指定xml中元素属性的名称;
至于required属性,官方文档是说指定 XML 模式属性是可选的还是必需的,不是特别理解。

@XmlElementWrapper(name=“attachList”)
为集合生成xml包装器元素,简单来讲就是使XML元素更有层次感,更美观,该注解只能用在集合上。
例子
1、类结构如下
在这里插入图片描述
AssistReportItem 与AssistReportMsg为映射对象;
JAXBUtils提供读写XML的方法;
JAXBXMLTest提供读写测试方法;

2、各个类如下
AssistReportItem 类
package cn.hb.jaxb1;

import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlRootElement;

/**

  • @author:lwz

  • @date:2019/10/16 20:07

  • @description:

  • @modefiled by:
    */
    @XmlAccessorType(XmlAccessType.FIELD)
    @XmlRootElement(name = “attach”)
    public class AssistReportItem {
    private String subjectId;
    private String subjectName;
    private String objectId;
    private String objectName;
    private String opName;
    private String opContent;
    private String opResult;
    private String logTime;
    private String category;
    private String remark;

    public String getSubjectId() {
    return subjectId;
    }

    public void setSubjectId(String subjectId) {
    this.subjectId = subjectId;
    }

    public String getSubjectName() {
    return subjectName;
    }

    public void setSubjectName(String subjectName) {
    this.subjectName = subjectName;
    }

    public String getObjectId() {
    return objectId;
    }

    public void setObjectId(String objectId) {
    this.objectId = objectId;
    }

    public String getObjectName() {
    return objectName;
    }

    public void setObjectName(String objectName) {
    this.objectName = objectName;
    }

    public String getOpName() {
    return opName;
    }

    public void setOpName(String opName) {
    this.opName = opName;
    }

    public String getOpContent() {
    return opContent;
    }

    public void setOpContent(String opContent) {
    this.opContent = opContent;
    }

    public String getOpResult() {
    return opResult;
    }

    public void setOpResult(String opResult) {
    this.opResult = opResult;
    }

    public String getLogTime() {
    return logTime;
    }

    public void setLogTime(String logTime) {
    this.logTime = logTime;
    }

    public String getCategory() {
    return category;
    }

    public void setCategory(String category) {
    this.category = category;
    }

    public String getRemark() {
    return remark;
    }

    public void setRemark(String remark) {
    this.remark = remark;
    }
    }


AssistReportMsg 类
package cn.hb.jaxb1;

import javax.xml.bind.annotation.*;
import java.util.List;

/**

  • @author:lwz

  • @date:2019/10/16 20:03

  • @description:

  • @modefiled by:
    */
    @XmlAccessorType(XmlAccessType.FIELD)
    @XmlType(propOrder = {“rmsId”, “department”, “userId”, “userName”,“reason”,“time”,“conclusion”,“attachList”})
    @XmlRootElement(name = “report”)
    public class AssistReportMsg {

    private String rmsId;
    private String department;
    private String userId;
    private String userName;
    private String reason;
    private String time;
    private String conclusion;

    @XmlElementWrapper(name=“attachList”)
    @XmlElement(name=“attach”)
    private List attachList;

    public List getAttachList() {
    return attachList;
    }

    public void setAttachList(List attachList) {
    this.attachList = attachList;
    }

    @Override
    public String toString() {
    return “AssistReportMsg{” +
    “rmsId=’” + rmsId + ‘’’ +
    “, department=’” + department + ‘’’ +
    “, userId=’” + userId + ‘’’ +
    “, userName=’” + userName + ‘’’ +
    “, reason=’” + reason + ‘’’ +
    “, time=’” + time + ‘’’ +
    “, conclusion=’” + conclusion + ‘’’ +
    ‘}’;
    }

    public String getRmsId() {
    return rmsId;
    }

    public void setRmsId(String rmsId) {
    this.rmsId = rmsId;
    }

    public String getDepartment() {
    return department;
    }

    public void setDepartment(String department) {
    this.department = department;
    }

    public String getUserId() {
    return userId;
    }

    public void setUserId(String userId) {
    this.userId = userId;
    }

    public String getUserName() {
    return userName;
    }

    public void setUserName(String userName) {
    this.userName = userName;
    }

    public String getReason() {
    return reason;
    }

    public void setReason(String reason) {
    this.reason = reason;
    }

    public String getTime() {
    return time;
    }

    public void setTime(String time) {
    this.time = time;
    }

    public String getConclusion() {
    return conclusion;
    }

    public void setConclusion(String conclusion) {
    this.conclusion = conclusion;
    }
    }
    JAXBUtils 类
    package cn.hb.jaxb;

import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
import javax.xml.bind.Unmarshaller;
import java.io.File;

/**

  • @author:lwz

  • @date:2019/10/16 19:43

  • @description:

  • JAXBUtils提供读写XML的方法;

  • @modefiled by:
    */
    public class JAXBUtils {

    public static void writeXML(Object obj, File path, Class… clazz) throws JAXBException {
    JAXBContext jctx = JAXBContext.newInstance(clazz);
    Marshaller marshaller = jctx.createMarshaller();
    // 格式化输出,设置换行和缩进,不设置则会显示在一行
    marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
    marshaller.marshal(obj, path);
    // 设置控制台输出
    marshaller.marshal(obj, System.out);
    }

    public static Object readXML(File path, Class… clazz) throws JAXBException {
    JAXBContext jctx = JAXBContext.newInstance(clazz);
    Unmarshaller unMarshaller = jctx.createUnmarshaller();
    Object obj = unMarshaller.unmarshal(path);

     return obj;
    

    }

}

JAXBXMLTest 类
package cn.hb.jaxb;

import javax.xml.bind.JAXBException;
import java.io.File;
import java.time.LocalDate;
import java.util.ArrayList;

/**

  • @author:lwz

  • @date:2019/10/16 19:45

  • @description:

  • JAXBXMLTest提供读写测试方法;

  • @modefiled by:
    */
    public class JAXBXMLTest {
    private static final String XML_PATH_COUNTRY = “./Country.xml”;
    private static final String XML_PATH_COUNTRIES = “./Countries.xml”;

    public static void main(String[] args) throws JAXBException {
    Country china = new Country();
    china.setName(“中国”);
    china.setCapital(“北京”);
    china.setPopulation(1400000000);
    china.setRank(25);
    String fTimeChina = LocalDate.of(1949, 10, 1).toString();
    china.setFoundationTime(fTimeChina);

     Country america = new Country();
     america.setName("United States of America");
     america.setCapital("New York");
     america.setPopulation(300000000);
     america.setRank(11);
     String fTimeAmerica = LocalDate.of(1776, 7, 4).toString();
     america.setFoundationTime(fTimeAmerica);
    
     File xmlFile = new File(XML_PATH_COUNTRY);
     File xmlFile1 = new File(XML_PATH_COUNTRIES);
    
     System.out.println("\n【写入到" + XML_PATH_COUNTRY + "】");
     JAXBUtils.writeXML(china, xmlFile, Country.class);
    
     System.out.println("\n【写入list到" + XML_PATH_COUNTRIES + "】");
     Countries countries = new Countries();
     ArrayList<Country> list = new ArrayList<>();
     list.add(china);
     list.add(america);
     countries.setCountries(list);
     JAXBUtils.writeXML(countries, xmlFile1, Countries.class);
    
     System.out.println("\n【从" + XML_PATH_COUNTRIES + "中读取】");
     Countries countriesRead = (Countries) JAXBUtils.readXML(xmlFile1, Countries.class, Country.class);
     System.out.println(countriesRead);
    
     System.out.println("\n【从" + XML_PATH_COUNTRY + "中读取】");
     Country countryRead = (Country) JAXBUtils.readXML(xmlFile, Country.class);
     System.out.println(countryRead);
    

    }

}
运行测试类,结果如下:
在这里插入图片描述遇到的问题:
在这里插入图片描述解决方法:
在类上添加这个注解
@XmlAccessorType(XmlAccessType.FIELD)

表示使用这个类中的 private 非静态字段作为 xml 的序列化的属性或者元素。这里还可以选择属性,也就是使用 set/get 方法来序列化属性或者元素

3D视觉-激光三角测量法的概述和原理 激光三角法位移测量的原理是,用一束激光以某一角度聚焦在被测物体表面,然后从另一角度对物体表面上的激光光斑进行成像,物体表面激光照射点的位置高度不同,所接受散射或反射光线的角度也不同,用。激光三角测量法是一种通过图像采集系统采集被测物表面漫反射的激光轮廓,进而基于设备已知的相对位置通过算法处理,获得被测物表面的三维轮廓数据,进而还原目标物体三维空间信息的方法。采用激光三角原理和回波分析原理进行非接触位置、位移测量的精密传感器, 广泛应用于位置、位移 、厚度、半径、形状、振动、距离等几何量的工业测量。 阅读详情

相关推荐

Unity Shader Graph 2D - Procedural程序化图形转动的环状六边形

Hexagon又称六边形,在游戏中是十分常见的基础形状,本文将使用程序化的六边形来制作多个环状六边形叠加的转动动画效果,实践Unity Shader Graph中的常用节点功能。

Giver的博客 1928

JAXB解析生成xml

1、简介 JAXB(Java Architecture for XML Binding) 是一个业界的标准,是一项可以根据XML Schema产生Java类的技术。JAXB 已经是jdk的组成部分,不需要另外引入jar包 2、几个核心注解 (1)@XmlRootElement(name = "response")  将Java类或枚举类型映射到XML元素。  (2)  @Xml

昕鸿的博客 1903

LLM大模型-vLLM本地部署全流程:Windows WSL2环境安装、HuggingFace与Modelscope模型加载与本地运行、Docker化部署与镜像分发

vLLM本地部署大模型方案 vLLM是一款高性能大模型推理引擎,通过PagedAttention技术显著提升吞吐量和内存效率,支持低成本、高并发的本地部署。 核心优势: 性能卓越:吞吐量远超同类方案,支持连续批处理等高级功能 成本优化:减少GPU服务器需求 兼容性强:提供类OpenAI的简洁API 部署步骤: 硬件准备:需NVIDIA GPU(如A100/3090),显存≥模型参数量×2(7B模型需14GB) 软件环境: Linux系统或Windows WSL2 安装CUDA 12.1+和Python 3.

2202_75674969的博客 4566

JaxbUtil工具类收集 对象和xml互转

对象和xml互转工具类

yzshen123456的博客 993

AI时代敏捷开发新范式——意图驱动开发IDD

具体的功能代码、单元测试、集成测试用例,以及最终可运行的、支持PlantUML的Markdown转Word工具新版本。:业务方(如技术文档团队)反馈,现有的Markdown转Word工具在处理包含PlantUML代码块的文档时,无法正确生成图表,导致技术方案、架构图等关键信息丢失,严重影响了文档交付质量和团队效率。这不仅带来了交付周期显著缩短、资源效能倍增的可观收益,更深远的意义在于,它描绘了未来软件工业化、智能化的新图景:一个由精准意图驱动、AI自主执行、人类智慧引领的敏捷、高效、高质的新世界。

LiuJunjiang的专栏 551

SAP 的预算控制并非单一功能,而是根据管控的精细度和业务场景,主要通过三个模块实现:CO(成本控制)、FM(基金管理) 和 PS(项目系统)

SAP系统提供三种预算控制模型:基于CO模块的成本中心/内部订单预算管控,适用于日常费用管理;基于FM模块的基金中心/承诺项目预算控制,满足公共部门严格资金管理需求;基于PS模块的WBS元素预算控制,专为项目型企业设计。各模型通过特定配置实现预算编制、审批、控制和分析功能,并配有核心事务代码(T-Code)支持全流程操作。企业可根据业务场景选择适合的预算控制方式,实现从预算编制到执行监控的闭环管理。

金牌架构师 253

Java中Xml和实体互转

Java中Xml和实体互转

Zhaof_Notes 3671

接入 AI 之后,为什么测试和排障还是没有真正变快?

如果你们准备做平台型 AI,不要先从聊天入口开始想。先把真实数据采上来;再把链路、版本、快照、报告这些核心对象建稳;再把历史沉淀、反馈、检索能力补齐;最后再让 AI 围绕这些对象去工作。这样做出来的 AI,才更容易从“看起来聪明”走向“真正省时间”。

专注 AI 精准测试平台实战落地,分享从代码 Diff 到回归决策的完整工程闭环。主张“先建数据链路,再上 AI 智能”,让测试从“靠经验”走向“基于风险”。 527

jaxb xml生成与解析

JAXB能够使用Jackson对JAXB注解的支持实现(jackson-module-jaxb-annotations),既方便生成XML,也方便生成JSON,这样一来可以更好的标志可以转换为JSON对象的JAVA类。JAXB允许JAVA人员将JAVA类映射为XML表示方式,常用的注解包括:@XmlRootElement,@XmlElement等等。 JAXB(Java Architecture f

ooiuy450的专栏 891

SillyTavern 酒馆在 Mac 和 Linux 上的部署教程(含启动器安装方法)

SillyTavern 是一个支持多种大模型聊天接口的本地前端项目,适用于 MacOS 和 Linux 系统。本文提供了两种部署方式:手动安装和使用 SillyTavern Launcher 安装器。手动安装需要先安装 Git 和 NodeJS,然后克隆项目源码并运行启动脚本。使用 Launcher 则更为简便,适合新手用户,能够自动安装依赖和配置环境。部署完成后,用户可以通过浏览器访问本地服务器,加载角色卡片并连接大模型 API,享受二次元角色扮演聊天的乐趣。无论是开发者还是终端用户,都能轻松完成 Sil

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 3393

图文:银行核心账务处理逻辑(白话篇)

银行账务系统分为对内账(记录银行自身资产负债)和对外账(处理客户交易),通过特定编码规则的账号体系进行管理。采用T型账户结构和凭证制度确保每笔交易可追溯,通过明细核算与综合核算双线并行、每日轧账核对(科目日结单、总账、日计表)实现账务精准平衡。从业务触发到最终账平的全流程体现了银行账务"分层记录、双向核对、闭环校验"的核心原则,保障资金流动的透明性与安全性。

银行信息系统应用架构详解 540

JAXB 生成解析XML

JAXB概念:  java对象←→XML 相关类和接口:   JAXBContext类,是应用的入口,用于管理XML/Java绑定信息。   Marshaller接口,将Java对象序列化为XML数据。   Unmarshaller接口,将XML数据反序列化为Java对象。 相关注解: @XmlRootElement,将Java类或枚举类型映射到XM...

weixin_30363981的博客 249

偏最小二乘回归分析原理详解和案例分析实例

偏最小二乘回归分析原理详解背景偏最小二乘回归分析 Partial least squares regression analysis基本思想建模步骤步骤一:分别提取两变量组的第一对成分,并使之相关性达最大步骤二:建立 y1,⋯ ,yp\boldsymbol{y}_{1}, \cdots, \boldsymbol{y}_{p}y1​,⋯,yp​ 对 u1\boldsymbol{u}_{1}u1​ 的回归及 x1,⋯ ,xm\boldsymbol{x}_{1}, \cdots, \boldsymbol{x}_{

从事脑科学核磁共振方法学研究,在Nature communications等权威期刊发表研究论文,熟练掌握磁共振处理方法和统计学方法,欢迎大家和我交流。 9977

java jaxb生成xml文件_利用oxygen编辑并生成xml文件,并使用JAVA的JAXB技术完成xml的解析...

首先下载oxygen软件(Oxygen XML Editor),目前使用的是试用版(可以安装好软件以后get trial licence,获得免费使用30天的权限,当然这里鼓励大家用正版软件!!!)1 首先建立一个空白XML文件,直接点击下图所示即可:2 可以使用xml文本编辑界面,或者使用xml树状图编辑界面切换到xml树状图编辑界面的方法为:即可调出当前xml文件所对应的xml树状图编辑界面3...

weixin_39525617的博客 261

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

JAXB xml生成与解析

JAXB(Java Architecture for XML Binding)是JSE和JEE平台的一部分,让开发者能够快速完成java类和XML的互相映射。常用的地方就是对象类和xml之间的映射,能够让bo自动生成节点,节点自动转成实体bo。JAXB封装在jdk中,jdk1.7及以上都不需要引入多于的jar包就可以完成JAXB代码开发了。下面结合具体常用实例来看特性~1.新建一个java工程,结...

非著名程序员 1131

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

jaxb xml 生成 java_java生成解析xml的另外两种方法JAXB

JAXB(Java Architecture for XML Binding) 是一个业界的标准,是一项可以根据XML Schema产生Java类的技术。该过程中,JAXB也提供了将XML实例文档反向生成Java对象树的方法,并能将Java对象树的内容重新写到XML实例文档。从另一方面来讲,JAXB提供了快速而简便的方法将XML模式绑定到Java表示,从而使得Java开发者在Java应用程序中能方...

weixin_35448391的博客 207

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

java用jaxb三步解析xml_三步解决JAXB生成XML包含CDATA问题

废话不多说,写此文档的目的就是为了帮助java开发者,解决利用JAXB生成XML时,XML中带有CDATA问题。分三步走:首先创建适配器类:CDataAdapter.javapackage com.zhaoyx;import javax.xml.bind.annotation.adapters.XmlAdapter;//有时候 Java 类不能自然映射到自己所需的 XML 形式,//这时需要编写自...

weixin_35837856的博客 1052

JAXB + SOAP XML 生成与解析

首先说明一下,SOAP XML 和普通XML之间有什么区别 与SOAP XML 相比 XML 是没有什么固定的格式 而SOAP XML 则有固定的标签组成头部,响应信息,错误信息等 具体可参考 SOAP 语法 现在来说说怎么生成SOAP XML // 这是咱们要定义的格式内容 <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:web="http://www.w3.org/">

哆啦A梦丶幻想的博客 3179

处理XML数据的解析与生成:使用DOM、SAX、JAXB等技术

处理XML数据的解析与生成可以使用不同的技术,如DOM(文档对象模型)、SAX(简单API for XML)和JAXB(Java Architecture for XML Binding)等。DOM适合对小型XML文档进行频繁的访问和修改,SAX适合处理大型XML文档或内存有限的情况,JAXB适合Java对象与XML数据之间的转换。- JAXB是一种将Java对象与XML数据进行绑定的技术,它可以将Java对象转换为XML数据(编组)或将XML数据转换为Java对象(解组)。

m0_75198698的博客 361

java生成xml2种_java生成解析xml的另外两种方法JAXB

DataBean.javapackage com.xidian.wq.imaopay.model.mesdata.base;import javax.xml.bind.annotation.XmlRootElement;/**** @author BYSocket* 报文头-[报文基础信息]*/@XmlRootElement(name="data_bean")public class DataBe...

weixin_33016355的博客 199

java生成解析xml的另外两种方法JAXB

JAXB(Java Architecture for XML Binding) 是一个业界的标准,是一项可以根据XML Schema产生Java类的技术。该过程中,JAXB也提供了将XML实例文档反向生成Java对象树的方法,并能将Java对象树的内容重新写到XML实例文档。从另一方面来讲,JAXB提供了快速而简便的方法将XML模式绑定到Java表示,从而使得Java开发者在Java应用...

dipi2338的博客 149

java用jaxb三步解析xml_java使用jaxb解析XML(含根据xml自动生成实体类)

users.xml文件示例张三18李四19根据XML生成xsd将trang.jar和要解析的xml放在同一目录,在当前文件下执行如下命令,其中users.xsd为要生成的xsd文件名java -jar trang.jar users.xml users.xsdtrang.jar下载地址:https://download.youkuaiyun.com/download/zheng_chang_wei/10617...

weixin_32129195的博客 477

使用Java提供的JAXB生成和解析XML

1.Student类: package test; import java.util.List; import javax.xml.bind.annotation.XmlAttribute; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlElementWrapper

Seven's 专栏 1091

java使用jaxb解析XML(含根据xml自动生成实体类)

users.xml文件示例 <?xml version="1.0" encoding="UTF-8"?> <users> <user id="1"> <name>张三</name> <age>18</age> </user> <user ...

日薪灬越亿的博客 685

JAVA使用JAXB解析复杂XML

唠叨话 目前网络上比较流行的数据传输方式当属:Json、字节流、XML了,说实话我个人更喜欢Json和字节流的方式进行数据传输。以下是我对这三种数据传输方式的几点见解: 三者都各有优缺点,根据需求的不同选择合适的数据传输方式。 Json在数据传输时能够保留绝大多数的数据结构属性,且数据冗余度也较小,解析方便。 XMl在数据传输时更能体现数据的结构属性且更灵活,但数据冗余度相对另外两种方式要大的多...

qq_31766141的博客 5169
上一篇: java后端学习路线
下一篇: springboot系列
article711
博客等级 码龄7年 4粉丝 16原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值