JAXB实现JAVA BEAN与XML之间的转换

微信小程序 - {errCode: 10008, errno: 1500104, errMsg: “writeBLECharacteristicValue:fail write characteris 微信小程序errCode: 10008, errno: 1500104, errMsg: "writeBLECharacteristicValue:fail write characteristics error. 10008, errMsg=The value's length is invalid.",uni-app微信小程序报错,uniApp小程序调用蓝牙api报错,向低功耗蓝牙设备的某个特征写入数据时错误,UniApp微信小程序蓝牙API调用报错10008解决方案,蓝牙设备进行通信时,向设备写入数据 阅读详情

JAXB主要用来实现对象和XML之间的序列化和反序列化,关于JAXB的介绍就不多说了,网上一搜一大把,这里主要总结下基本使用方法和一些注意事项

首先定义两个示例类ClassA,ClassB,用于后续的示例演示

public class ClassA {
    private int classAId;
    private String classAName;
    private ClassB classB;

    public int getClassAId() {
        return classAId;
    }

    public void setClassAId(int classAId) {
        this.classAId = classAId;
    }

    public String getClassAName() {
        return classAName;
    }

    public void setClassAName(String classAName) {
        this.classAName = classAName;
    }

    public ClassB getClassB() {
        return classB;
    }

    public void setClassB(ClassB classB) {
        this.classB = classB;
    }
}

public class ClassB {
    private int classBId;
    private String classBName;

    public int getClassBId() {
        return classBId;
    }

    public void setClassBId(int classBId) {
        this.classBId = classBId;
    }

    public String getClassBName() {
        return classBName;
    }

    public void setClassBName(String classBName) {
        this.classBName = classBName;
    }
}
用于序列化的XmlUtil
import java.io.StringReader;
import java.io.StringWriter;
import javax.xml.bind.*;

public class XmlUtil {
    public static String toXML(Object obj) {
        try {
            JAXBContext context = JAXBContext.newInstance(obj.getClass());
            Marshaller marshaller = context.createMarshaller();
            marshaller.setProperty(Marshaller.JAXB_ENCODING, "UTF-8");// //编码格式
            marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);// 是否格式化生成的xml串
            marshaller.setProperty(Marshaller.JAXB_FRAGMENT, false);// 是否省略xm头声明信息
            StringWriter writer = new StringWriter();
            marshaller.marshal(obj, writer);
            return writer.toString();
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }

    @SuppressWarnings("unchecked")
    public static <T> T fromXML(String xml, Class<T> valueType) {
        try {
            JAXBContext context = JAXBContext.newInstance(valueType);
            Unmarshaller unmarshaller = context.createUnmarshaller();
            return (T) unmarshaller.unmarshal(new StringReader(xml));
        } catch (Exception e) {
            throw new RuntimeException(e.getMessage());
        }
    }
}
调用如下:
public class MainRun {

    /**
     * @param args
     */
    public static void main(String[] args) {

        ClassB classB = new ClassB();
        classB.setClassBId(22);
        classB.setClassBName("B2");

        ClassA classA = new ClassA();
        classA.setClassAId(11);
        classA.setClassAName("A1");
        classA.setClassB(classB);

        System.out.println(XmlUtil.toXML(classA));
    }
}
输出结果如下:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<classA>
    <classAId>11</classAId>
    <classAName>A1</classAName>
    <classB>
        <classBId>22</classBId>
        <classBName>B2</classBName>
    </classB>
</classA>

这里要注意以下几点

  1. 要序列化的类加上 @XmlRootElement注解,否则会报错(错误提示很清晰,这里就不贴出来了)
  2. JAXB序列化XML时  默认序列化getter和setter,且getter和setter必须成对出现才会被序列化
  3. 属性名称,默认序列化出来的类和属性名称默认是首字母转换为小写,若需要控制属性名称需要在getter或setter上使用 @XmlElement(name="ClassAId") 指定名称,这里要注意的是@XmlElement放置在getter或setter上都行,但只能放一个,也就是说不能同时在getter和setter上使用@XmlElement注解
  4. 如何控制根节点名称?
    使用@XmlRootElement指定name属性即可,如@XmlRootElement(name="ClassA")
  5. 怎么添加命名空间
    使用@XmlRootElement(namespace="cn.lzrabbit") 指定namespace属性
  6. 怎么精确控制每个属性名称
    JAXB自动转化为首字母小写会导致不可预料的属性名称出现, 不嫌麻烦的话为每个属性设置@XmlElement(name=""),想省事的话使用Field
  7. 怎么样实现序列化时使用Field字段而不是使用setter和getter
    在要使用的类上面加上@XmlAccessorType(XmlAccessType.FIELD)注解,并指定为XmlAccessType.FIELD,这里强烈推荐使用@XmlAccessorType(XmlAccessType.FIELD)注解,因为这样你可以精确的控制每个元素的名称,而不需要为每个属性去设置@XmlElement(name="")注解,当然也可以在Field上使用@XmlElement注解

下面给出使用了使用如上注解后的代码示例

@XmlRootElement(namespace="cn.lzrabbit")
@XmlAccessorType(XmlAccessType.FIELD)
public class ClassA {
    private int classAId;
    
    @XmlElement(name="ClassAName")
    private String classAName;

    private ClassB classB;

    public int getClassAId() {
        return classAId;
    }
    public void setClassAId(int classAId) {
        this.classAId = classAId;
    }

    public String getClassAName() {
        return classAName;
    }

    public void setClassAName(String classAName) {
        this.classAName = classAName;
    }

    public ClassB getClassB() {
        return classB;
    }

    public void setClassB(ClassB classB) {
        this.classB = classB;
    }
}

@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class ClassB {
    private int ClassBId;
    private String ClassBName;

    public int getClassBId() {
        return ClassBId;
    }

    public void setClassBId(int classBId) {
        this.ClassBId = classBId;
    }

    public String getClassBName() {
        return ClassBName;
    }

    public void setClassBName(String classBName) {
        this.ClassBName = classBName;
    }
}
输出xml为
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ns2:classA xmlns:ns2="cn.lzrabbit">
    <classAId>11</classAId>
    <ClassAName>A1</ClassAName>
    <classB>
        <ClassBId>22</ClassBId>
        <ClassBName>B2</ClassBName>
    </classB>
</ns2:classA>
JAXB命名空间及命名空间前缀处理

  
  • 使用package-info.java添加默认命名空间
    在需要添加命名空间的包下面添加package-info.java文件,然后添加@XmlSchema注解,这样整个包序列化时就都会自动加上命名空间了
    @XmlSchema(namespace = "http://www.lzrabbit.cn")
    package cn.lzrabbit;
    
    import javax.xml.bind.annotation.XmlSchema;

     

  • 命名空间前缀处理
    相信大名鼎鼎的ns2,nsXX让很多人非常头疼类似下面这样的
    复制代码
    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <ns2:classA xmlns:ns2="http://www.lzrabbit.cn">
        <classAId>11</classAId>
        <ClassAName>A1</ClassAName>
        <classB>
            <ClassBId>22</ClassBId>
            <ClassBName>B2</ClassBName>
        </classB>
    </ns2:classA>
    复制代码

    解决方法一(不推荐):
    添加package-info.java添加@XmlSchema注解并设置属性xmlns

    @XmlSchema( xmlns = { @XmlNs(namespaceURI = "http://www.lzrabbit.cn", prefix = "rabbit"), @XmlNs(namespaceURI = "http://www.cnblogs.com", prefix = "blog")})
    
    package cn.lzrabbit;
    import javax.xml.bind.annotation.XmlSchema;
    import javax.xml.bind.annotation.XmlNs;

    ClassA如下

    复制代码
    package cn.lzrabbit;
    
    import javax.xml.bind.annotation.*;
    
    @XmlRootElement(namespace="http://www.lzrabbit.cn")
    @XmlAccessorType(XmlAccessType.FIELD)
    public class ClassA {
        private int classAId;
        
        @XmlElement(name="ClassAName")
        private String classAName;
    
        private ClassB classB;
    
        public int getClassAId() {
            return classAId;
        }
        public void setClassAId(int classAId) {
            this.classAId = classAId;
        }
    
        public String getClassAName() {
            return classAName;
        }
    
        public void setClassAName(String classAName) {
            this.classAName = classAName;
        }
    
        public ClassB getClassB() {
            return classB;
        }
    
        public void setClassB(ClassB classB) {
            this.classB = classB;
        }
    }
    复制代码

     

    序列化结果如下,可以看到已经按照我们所预期的修改了命名空间前缀,这里要注意下需要自定义前缀的实体类添加的@XmlRootElement(namespace="http://www.lzrabbit.cn")注解时指定的namespace必须和package-info.java定义的前缀一致,否则还是会生成nsXX这样的前缀

    复制代码
    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <rabbit:classA xmlns:rabbit="http://www.lzrabbit.cn" xmlns:blog="http://www.cnblogs.com">
        <classAId>11</classAId>
        <ClassAName>A1</ClassAName>
        <classB>
            <ClassBId>22</ClassBId>
            <ClassBName>B2</ClassBName>
        </classB>
    </rabbit:classA>
    复制代码

    注意事项
    1.若jdk版本为1.6的需要需要添加jaxb-core-2.2.7.jar和jaxb-impl-2.2.7.jar两个包的引用,否则即便设置了package-info的XmlSchema注解的xmlns注释也不能生效,若为jdk 1.7的无需添加
    2.使用XmlSchema定义的前缀会对整个包生效,无法实现对每个实体类的单独前缀定义,很不灵活,故此不推荐使用此方式

    解决方法二(推荐):
    同方法一若jdk版本为1.6需要添加jaxb-core-2.2.7.jar和jaxb-impl-2.2.7.jar两个包的引用,不过方法二不需要添加package-info当然也就不需要定义XmlSchema
    思路就是实现NamespacePrefixMapper抽象类,并重写getPreferredPrefix方法,看到方法名应该都明白了,对就是在序列化的时候重写获取命名空间前缀方法,为了简洁这里使用类匿名内部类实现的

    复制代码
    marshaller.setProperty("com.sun.xml.bind.namespacePrefixMapper", new NamespacePrefixMapper() {
                    @Override
                    public String getPreferredPrefix(String namespaceUri, String suggestion, boolean requirePrefix) {
                        if (namespaceUri.equals("http://www.lzrabbit.cn")) return "abc";
    return suggestion; } });
    复制代码

    如上所示,在序列化时判断namespaceUri也就是我们定义的命名空间,然后返回我们自定义的前缀,其中的suggestion参数就是默认的前缀,有兴趣的话打印下就会发现suggestion就是ns2之类的前缀,把要自定义前缀的命名空间都在这里判断下就可以完全控制自定义前缀了,相对方法一来说可以实现对每个实体类的命名空间前缀控制,采用方法二后的序列化结果:

    复制代码
    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <abc:classA xmlns:abc="http://www.lzrabbit.cn">
        <classAId>11</classAId>
        <ClassAName>A1</ClassAName>
        <classB>
            <ClassBId>22</ClassBId>
            <ClassBName>B2</ClassBName>
        </classB>
    </abc:classA>
    复制代码

    采用方法二后的序列化方法

    复制代码
    package cn.lzrabbit;
    
    import java.io.StringReader;
    import java.io.StringWriter;
    
    import javax.xml.bind.*;
    
    import com.sun.xml.bind.marshaller.NamespacePrefixMapper;
    import com.sun.xml.bind.v2.WellKnownNamespace;
    
    public class XmlUtil {
    
        public static String toXML(Object obj) {
            try {
                JAXBContext context = JAXBContext.newInstance(obj.getClass());
    
                Marshaller marshaller = context.createMarshaller();
                marshaller.setProperty(Marshaller.JAXB_ENCODING, "UTF-8");// //编码格式
                marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);// 是否格式化生成的xml串
                marshaller.setProperty(Marshaller.JAXB_FRAGMENT, false);// 是否省略xm头声明信息
    
                marshaller.setProperty("com.sun.xml.bind.namespacePrefixMapper", new NamespacePrefixMapper() {
                    @Override
                    public String getPreferredPrefix(String namespaceUri, String suggestion, boolean requirePrefix) {
                        if (namespaceUri.equals("http://www.lzrabbit.cn")) return "abc";
                        if (namespaceUri.contains("http://www.cnblogs.com")) return "blog";
                        return suggestion;
                    }
                });
    
                StringWriter writer = new StringWriter();
                marshaller.marshal(obj, writer);
                return writer.toString();
            } catch (Exception e) {
                throw new RuntimeException(e);
            }
        }
    
        @SuppressWarnings("unchecked")
        public static <T> T fromXML(String xml, Class<T> valueType) {
            try {
                JAXBContext context = JAXBContext.newInstance(valueType);
                Unmarshaller unmarshaller = context.createUnmarshaller();
                return (T) unmarshaller.unmarshal(new StringReader(xml));
            } catch (Exception e) {
                throw new RuntimeException(e.getMessage());
            }
        }
    }
    复制代码

     

现在我们基本解决了jaxb序列化xml的命名空间及前缀问题,但还是有很多问题,比如序列化和反序列化时如何忽略命名空间,如何使用@XmlRootElement控制每个实体类的默认命名空间也就是消除命名空间前缀

下一篇继续深入,Java XML操作之JAXB玩转命名空间 

最后给下jaxb-core-2.2.7.jar和jaxb-impl-2.2.7.jar两个包的maven引用

复制代码
<dependency>
    <groupId>com.sun.xml.bind</groupId>
    <artifactId>jaxb-core</artifactId>
    <version>2.2.7</version>
</dependency>

<dependency>
    <groupId>com.sun.xml.bind</groupId>
    <artifactId>jaxb-impl</artifactId>
    <version>2.2.7</version>
</dependency>
复制代码

也可以自行去官网下载 https://jaxb.java.net/


【32】软考软件设计师——算法题(一):分治法与动态规划深度精讲|下午第4题常考满分攻略 本文是《软件设计师·50讲通关|从零基础到工程师职称》专栏第32篇,正式开启**模块四:应用技术(下午题)算法大题专项**,聚焦下午第4道高频必考大题核心两大算法:分治法与动态规划。全文超4000字深度拆解两大经典算法的底层核心思想、算法策略识别技巧、递归边界设计、状态转移方程推导,全覆盖代码填空高频考点、时间复杂度分析、经典题型解题套路;配套可直接默写的递归代码模板、DP状态设计范式、真题完整填空案例,彻底解决考生分不清分治与DP、递归边界写错、状态转移推不出、复杂度算不对四大核心痛点。 阅读详情

相关推荐

STM32CubeMX+Keil5实战:手把手教你用STM32F103C8T6开发扫地机器人(附完整代码)

本文详细介绍了如何使用STM32F103C8T6开发智能扫地机器人,从STM32CubeMX配置到Keil5代码实现的全过程。涵盖硬件选型、时钟树配置、GPIO外设设置、电机驱动、超声波测距及自动避障算法等核心内容,并提供完整代码示例,助力开发者快速掌握智能硬件开发技巧。

weixin_30329623的博客 81

解读JAXBContext类

解读JAXBContext类 JAXBContext是整个JAXB API的入口.主要用来构建JAXB实例(newInstance()),并提供与XML/Java绑定信息相关的抽象方法,如编组(createMarshaller())、解组(createUnmarshaller())和验证(createValidator()).其中与验证相关的方法已废弃(Deprecated),被Validator...

mry6的博客 8442

【LabVIEW懒人系列教程-视觉入门】2.6LabVIEW模板匹配之创建模板

上期2.5在Labview软件框架中实现了模板匹配功能的运用,然而我们的模板图像是通过视觉助手创建出来的,在实际项目中这样做 ,难免有些不妥。所以,今天就给大家讲解一下,如何编写创建模板功能,模板图像的创建与加载需要注意一些什么。 模板图片的创建,大家可以理解为将图像中的一个特征区域扣下来,通过Labview函数进行信息学习,然后保存成带有图像信息的模板图。 具体做法,下面为大家演示一下 百度网盘视频链接:https://pan.baidu.com/s/1-zxcJBxPgk4t1Ej..

视觉龙哥 2168

JAXB注解

@XmlRootElement   将一个Java类映射为一段XML的根节点 参数:name          定义这个根节点的名称       namespace    定义这个根节点命名空间 @XmlAccessorType  定义映射这个类中的何种类型需要映射到XML。 可接收四个参数,分别是:       XmlAccessType.FIELD:映射这个类中的

lihushiwoa的专栏 565

MT4/MT5数据源接入全攻略:从买服务、自研API到低成本DDE,哪种方案适合你?

本文全面解析MT4/MT5数据源接入的三种主流方案:商业服务、自研API和低成本DDE,详细对比其技术参数、成本结构和适用场景。帮助技术团队根据业务需求选择最优方案,确保外汇交易系统的数据流稳定性和实时性,提升交易体验和业务连续性。

weixin_42568801的博客 173

避开这些坑!baostock获取股票数据时最容易犯的5个错误(Python实战)

本文针对使用Python和baostock库获取股票历史数据时常见的五大陷阱,提供了实战解决方案。重点剖析了登录状态验证、参数配置、数据解析、批量操作效率及数据一致性校验等关键环节,帮助开发者构建稳健高效的数据获取流程,避免因细节疏忽导致的数据错误或性能瓶颈。

websocket5live的博客 1442

JAXB学习四 (理解JAXBContext)

在jaxb应用中,JAXBContext类可以说是使用JAXB API的入口点,就像是一道门,只有通过它才能进入到jaxb的世界里。   JAXBContext类提供的功能主要有: marshall unmarshall validate 在jaxb中,通常如果声明JAXBContext对象: JAXBContext jaxbContext = JAXBContext.newIn...

刘刚的空间 838

FFmpeg硬件加速实战:VAAPI驱动配置全攻略(含NVIDIA/Intel避坑指南)

本文详细解析了在Linux环境下配置FFmpeg使用VAAPI接口实现硬件加速的完整流程。针对NVIDIA、Intel等主流显卡,提供了从驱动安装、环境变量设置到多显卡切换的实战指南,并重点解决了闭源驱动冲突、国产系统适配等常见问题,帮助用户有效提升视频处理性能。

weixin_29306011的博客 456

JAXBContext实现xml与对象的相互转换

以上两个可以更改属性在xml输出的字段名,用法:@XmlRootElement(name="别名")@XmlRootElement :表示根节点对象,最方便的只用这一个注解就可以转换。@XmlType:用在根节点类上,主要用于控制类的结构和类型信息,以及属性的顺序等。@XmlElement:表示子节点,只能用在属性的get/set方法上。使用jdk自带的类转化对象与xml,不需要引入第三方jar包。2.转化xml的对象用到的注解。1.转化工具类先来一个。

Spanluobo的博客 605

YOLOv11改进 - 卷积Conv | GCNet之金箍棒块GCBlock : 重参数化捕获全局依赖 | CVPR 2025

文介绍了GCBlock在YOLOv11中的结合应用。GCBlock是GCNet的核心组件,能高效捕获特征图中的全局依赖关系,融合了非局部网络和挤压 - 激励网络的优势,降低计算成本并保障模型性能。其遵循“上下文建模 - 特征变换 - 特征融合”框架,通过全局平均池化、全连接层等操作生成注意力权重。我们将GCBlock集成进YOLOv11,替代原有的部分卷积模块,实现更高效的全局上下文建模。实验证明,YOLOv11-GCBlock在目标检测任务中表现出色,展现了GCBlock在深度学习中的广泛应用前景。

魔改工程师的博客 907

大模型部署指南:SGLang 框架

本文介绍使用 SGLang 框架部署大模型

举世誉之而不加劝,举世非之而不加沮,定乎内外之分,辩乎荣辱之境,斯已矣。 1612

JAXB注解实现java Bean和xml之间的转换

JAXB注解,可以通过JAXB轻松实现对象和XML之间的转换。 public class Main { public static void main(String args[]) { try { Dog dog = new Dog(); dog.setId(1000L); dog.setNam...

江城宴的博客 1112

OceanSim: 基于Isaac Sim GPU 加速水下机器人感知仿真框架

OceanSim 采用先进的基于物理的渲染技术,对水下视觉和声学传感器进行精确建模。与其他模拟引擎相比,OceanSim 的渲染速度要快得多。作为 NVIDIA Issac Sim 的扩展,OceanSim 采用了多功能设计。通过融入快速发展的 NVIDIA Omniverse 生态系统,我们的模拟器自然而然地在机器人学习和水下机器人技术之间架起了一座桥梁,从而促进了水下应用中体现型人工智能技术的开发和部署。OceanSim 将以开放源码的方式提供,使研究界能够以合作的模式作出贡献。

机器人控制与仿真应用 2053

android jaxb,实现javabean与xml互转源码,JAXB注解实现java Bean和xml之间的转换

JAXB注解,可以通过JAXB轻松实现对象和XML之间的转换。public class Main {public static void main(String args[]) {try {Dog dog = new Dog();dog.setId(1000L);dog.setName("xiaoWang");dog.setAge(10);Writer writer = new StringWri...

weixin_36450655的博客 597

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

计算机控制技术及应用

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

利用JAXB实现xml和bean之间的转换(一)

JAXB能够使用Jackson对JAXB注解的支持实现(jackson-module-jaxb-annotations),既方便生成XML,也方便生成JSON,这样一来可以更好的标志可以转换为JSON对象的JAVA类。 JDK中JAXB相关的重要Class和Interface: JAXBContext类,是应用的入口,用于管理XML/Java绑定信息。 Marshaller接口,将Java对

LchinaM的专栏 1万+

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Java的xml与map,与Bean互转

xml与map互转,主要使用dom4j import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.DocumentHelper; import org.dom4j.Element; import org.dom4j.io.OutputFormat; import org.dom4j...

weixin_30247159的博客 338

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

利用jaxb实现xml和bean的相互转换

1、使用jar包生成xsd文件 java -jar trang.jar a.xml a.xsd xml格式 生成的xsd文件 2、使用xjc命令生成bean文件 xjc a.xsd 生成的相关bean文件 3、xml与bean的相互转换 xml转bean Codes codes = JAXB.unmarshal(new FileReader("test.xml"), Codes.class...

weixin_34256074的博客 91

JAXB插件,根据XSD生成bean

1.JAXB插件下载地址:http://download.youkuaiyun.com/detail/gao454917848/8650171    JAXB插件使用方法:(1)解压缩                                     (2)复制到eclipse目录下的drophin中                                     (3)重启eclips...

275

使用JAXB包实现bean和xml的互转

前言 由于项目需要,调用第三方接口,接口返回格式为xml格式。遂用上了javax.xml 用于实现Bean和xml互转 首先我们看看工具类XmlUtil /** * XML转对象 * * @param xmlStr xml字串 * @param t 对象类型 * @return 对象 */ public s...

码农飞哥 2017

转:jaxb解析xml为对象例子

原文[url]http://weareold.iteye.com/blog/708543[/url] 通过jaxb方式把xml文件映射成bean对象。 1、新建java工程或者web工程都可以。 2、通过精简必须导入jar包 activation.jar jaxb-api-2.0.jar jaxb-impl-2.0...

terrorist2008的专栏 192

xml与java实体相互转化

1、实体转换类: public abstract class BuildXmlUtils {     /**      * 获得泛型实体      * @return      * @throws InstantiationException      * @throws IllegalAccessException      */     @SuppressWarni

IT 民工 3560

XMLUtil

package com.dmo.util; import javax.xml.bind.JAXBContext; import javax.xml.bind.JAXBException; import javax.xml.bind.Unmarshaller; import java.io.StringReader; /** * 常用XML操作工具 */ public class XMLUtil { /** * XML String 2 Bean * @param xm.

qianhuan_的博客 447

Springboot中你用Xstream和JAXB方式xml与bean相互转换

在现今的项目开发中,虽然数据的传输大部分都是用json格式来进行传输,但是xml毕竟也会有一些老的项目在进行使用,正常的老式方法是通过获取节点来进行一系列操作,个人感觉太过于复杂、繁琐。推荐一套简单的api--XStream类。在理解了原理的情况下看下注解的语法即会使用例子是把xml映射成bean对象 <?xml version="1.0" encoding="UTF-8"?> &...

霓虹深处 2500

JAXB实现XML和Bean相互转换

Java中实现XML和Bean的转换的方式或插件有以下几种:JAXB(Java Architecture for XML Binding):JAXB是Java SE的一部分,可以将Java对象与XML文档相互转换。它提供了注解和XML绑定文件两种配置方式。Dom4j:Dom4j是一个开源的Java库,用于操作XML文档。它可以将XML文档转换为Java对象,也可以将Java对象转换为XML文档。

quyingzhe0217的博客 1912

使用Java jaxb处理bean生成xml中一些问题

在使用jaxb从bean转换为xml过程中,默认会将bean中属性为null的属性过滤掉,如下: @XmlAccessorType(XmlAccessType.FIELD) @XmlRootElement(name = "project") public class Person { private String name; private String address;

随便写点的专栏 1万+

使用JAXB进行XML与JavaBean的转换(支持泛型)

看到别人有个1024的勋章,特意留了一篇在今年的10.24日,看看会不会获得。 在日常开发中可能涉及接口之间的相互调用,虽然在现在微服务的理念推广下,很多公司都采用轻量级的JSON格式做为序列化的格式,但是不乏有些公司还是有一些XML格式的报文,最近就在对接某个合作方的时候遇到了XML报文。在JSON报文爽快的转换下很难试用一个一个的拿报文参数,还是希望能直接将报文转换成Bean。接下来就了解到...

熊猫的博客 6963
上一篇: Oracle存储过程实例
下一篇: Spring MVC整合MyBatis
刘尐
博客等级 码龄15年 3粉丝 5原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值