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

OsgEarth开发笔记(三):Osg3.6.3+OsgEarth3.1+vs2019x64开发环境搭建(下) 上一篇编译了proj6.2.0、gdal3.2.1,本篇继续。 OsgEarth的编译,是基于Osg和OsgEarth结合在一起的,先要编译Osg,然后编译OsgEarth。OsgEarth的依赖库较多,分为上、中、下三篇,然后单独有一篇如何将编译好的osgEarth集成到Qt中。 阅读详情

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/


10万+字超硬核 机器学习 笔记(面试八股) 10w字总结面试中可能用到的机器学习八股和常用算法,包括感知机(Perceptron)、多层感知机(MLP, Multi-Layer Perceptron)、支持向量机(SVM, Support Vector Machine)、K 最近邻(KNN, K-Nearest Neighbors)、朴素贝叶斯(Naive Bayes)、决策树(Decision Tree)、随机森林(Random Forest)、Bagging、Boosting、GBDT、XGBoos、LightGBM等。 阅读详情

相关推荐

什么是PMOS?什么是NMOS?两者有什么区别?

这个电压差被称为阈值电压(Vth),通常为0.7V至2V(低压NMOS)或4V至10V(功率NMOS)。当Vgs(栅极-源极电压)大于Vth时,沟道中的电子被吸引到栅极下方,形成导电通路,使电流可以从漏极流向源极。NMOS与PMOS的结构类似,都由三大部分组成:栅极(Gate)、源极(Source)和漏极(Drain)。由于NMOS在开启时,电子是主要的载流子,电子的迁移率比空穴高,因此NMOS通常具有更低的导通电阻(Rds(on)),这使其成为高速开关电路中的首选。它的沟道由电子(负载子)传导。

硅农深芯的博客 6441

解读JAXBContext类

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

mry6的博客 8442

产品竞争策略方法论:构建“差异化 + 结构化 + 系统化”的竞争优势

本文系统探讨了IoT产品竞争策略,指出当前企业普遍存在硬件能力强但商业竞争能力不足的问题。文章构建了五层竞争模型(产品层、体验层、服务层、数据层、生态层),提出五大核心竞争策略(成本领先、差异化竞争、聚焦竞争、生态竞争、数据驱动竞争),并详细阐述了差异化设计方法。通过行业案例分析(小米、苹果、特斯拉)和五步落地方法,强调从硬件竞争向系统优势转变的重要性。文章指出IoT竞争胜负关键在后半场的数据运营和服务延伸,建议企业通过构建差异化能力、完善服务体系、建立数据体系、逐步构建生态来避免价格战陷阱,实现从跟随到领

专注智能硬件软硬件产品经理成长与实战,分享从需求定义到量产落地的真实日记。涵盖IoT趋势洞察、研发协作经验、产品方法论与工具箱,用轻松有趣的“汪式”视角,陪伴产品经理成长、避坑与升级。 360

JAXB注解

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

lihushiwoa的专栏 565

对西安交大轴承数据集XJTU-SY_Bearing_Datasets进行读取和处理:

故障诊断,对西安交大轴承数据集XJTU-SY_Bearing_Datasets进行读取和处理

qq_44757503的博客 6061

ESP32-CAM与TFT屏幕实时图像传输:Arduino环境下的OV2640驱动实践

本文详细介绍了在Arduino环境下实现ESP32-CAM与TFT屏幕实时图像传输的完整实践方案。重点解析了OV2640摄像头的驱动配置、硬件引脚连接、TFT屏幕初始化及图像显示优化技巧,帮助开发者快速构建稳定的实时图像显示系统,适用于物联网监控、门禁系统等场景。

cuda7parallel的博客 115

JAXB学习四 (理解JAXBContext)

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

刘刚的空间 838

AD620仪表放大器模块实战:从双电源切换到单电源供电的完整指南(附原理图)

本文深入探讨了AD620仪表放大器模块从双电源切换到单电源供电的常见陷阱与正确方案。通过解析AD620的内部架构与电气特性,指出其“天生”依赖双电源,简单的跳线改装会导致芯片损坏或失效。文章提供了基于AD623芯片的真正单电源替代方案,并附有原理图与实战波形对比,为便携式设备设计提供了完整指南。

weixin_29231027的博客 371

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

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

Spanluobo的博客 605

泛微Ecology9接口调用全流程:从配置到实战Java代码解析

本文详细解析了泛微Ecology9系统接口的完整调用流程,涵盖安全架构、服务端配置与客户端Java实战代码。重点阐述了基于RSA加密的认证机制、Token管理策略,并提供了企业级集成的核心代码示例与生产环境调优建议,帮助开发者安全、高效地实现系统对接。

m9n0o的博客 838

从零开始理解二极管限幅:5种典型电路设计及实际应用场景解析

本文系统解析了二极管限幅电路的五大经典拓扑,包括串联与并联型上下限幅及双向限幅。通过剖析其核心原理与二极管的单向导电性、正向压降特性,结合ADC输入保护、电源管理、音频处理等实际应用场景,提供了从器件选型到设计陷阱规避的完整实战指南,帮助工程师为信号构建可靠的“安全笼”。

2y3u4i5o6p的博客 1034

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

图神经网络实战(8)——图注意力网络(Graph Attention Networks, GAT)

图注意力网络 (Graph Attention Networks, GAT) 是对图卷积网络 (Graph Convolutional Network, GCN) 的改进,提出了一种通过自注意力 (self-attention) 过程计算的加权因子,而不是使用静态的归一化系数。在本节中,我们介绍了 GAT 架构。通过从线性变换到多头注意力的四个主要步骤,了解了 GAT 的工作原理,并在 NumPy 中从零开始构建了 GAT 层。最后,将 GAT 模型应用于 Cora 和 CiteSeer 数据集。

盼小辉丶的博客 1万+

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...

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

利用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万+

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

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

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

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

利用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、付费专栏及课程。

余额充值