JAXB的用法及介绍

2024-03-16 17:18
文章标签 介绍 用法 jaxb

本文主要是介绍JAXB的用法及介绍,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、jaxb是什么  
    JAXB是Java Architecture for XML Binding的缩写。可以将一个Java对象转变成为XML格式,反之亦然。 
    我们把对象与关系数据库之间的映射称为ORM,其实也可以把对象与XML之间的映射称为OXM(Object XML Mapping)。原来JAXB是Java EE的一部分,在JDK1.6中,SUN将其放到了Java SE中,这也是SUN的一贯做法。JDK1.6中自带的这个JAXB版本是2.0,比起1.0(JSR 31)来,JAXB2(JSR 222)用JDK5的新特性Annotation来标识要作绑定的类和属性等,这就极大简化了开发的工作量。 
     二、jaxb应用模式  
    在JAVA EE 5\6中,jaxb可以很方便的与jax-rs、jax-ws集成,极大的简化了web service接口的开发工作量。 
     三、jaxb代码举例  
第一步:需要引入 javax.xml.bind.jar  
第二步:编写java bean; 
[java]  view plain copy
  1. package com.mkyong.core;  
  2.    
  3. import javax.xml.bind.annotation.XmlAttribute;  
  4. import javax.xml.bind.annotation.XmlElement;  
  5. import javax.xml.bind.annotation.XmlRootElement;  
  6.    
  7. @XmlRootElement  
  8. public class Customer {  
  9.    
  10.     String name;  
  11.     int age;  
  12.     int id;  
  13.    
  14.     public String getName() {  
  15.         return name;  
  16.     }  
  17.    
  18.     @XmlElement  
  19.     public void setName(String name) {  
  20.         this.name = name;  
  21.     }  
  22.    
  23.     public int getAge() {  
  24.         return age;  
  25.     }  
  26.    
  27.     @XmlElement  
  28.     public void setAge(int age) {  
  29.         this.age = age;  
  30.     }  
  31.    
  32.     public int getId() {  
  33.         return id;  
  34.     }  
  35.    
  36.     @XmlAttribute  
  37.     public void setId(int id) {  
  38.         this.id = id;  
  39.     }  
  40.    
  41. }  

第三步:main方法把java bean转化为xml字符串 
[java]  view plain copy
  1. package com.mkyong.core;  
  2.    
  3. import java.io.File;  
  4. import javax.xml.bind.JAXBContext;  
  5. import javax.xml.bind.JAXBException;  
  6. import javax.xml.bind.Marshaller;  
  7.    
  8. public class JAXBExample {  
  9.     public static void main(String[] args) {  
  10.    
  11.       Customer customer = new Customer();  
  12.       customer.setId(100);  
  13.       customer.setName("mkyong");  
  14.       customer.setAge(29);  
  15.    
  16.       try {  
  17.    
  18.         File file = new File("C:\\file.xml");  
  19.         JAXBContext jaxbContext = JAXBContext.newInstance(Customer.class);  
  20.         Marshaller jaxbMarshaller = jaxbContext.createMarshaller();  
  21.    
  22.         // output pretty printed  
  23.         jaxbMarshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);  
  24.    
  25.         jaxbMarshaller.marshal(customer, file);  
  26.         jaxbMarshaller.marshal(customer, System.out);  
  27.    
  28.           } catch (JAXBException e) {  
  29.         e.printStackTrace();  
  30.           }  
  31.    
  32.     }  
  33. }  

下面是输出: 
[html]  view plain copy
  1. <?xml version="1.0" encoding="UTF-8" standalone="yes"?>  
  2. <customer id="100">  
  3.     <age>29</age>  
  4.     <name>mkyong</name>  
  5. </customer>  

四、jaxb开发常用  
    jdk提供了xjc工具可以使xsd自动生成相应的java bean,这大大提高了开发的效率。同时,我们也可以使用 trang.jar 把xml轻松转化为xsd。下面是使用的举例。 

    第一步:把数据库表映射为xml 

[html]  view plain copy
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <User u_id="1" u_name="moto" u_email="aaa@XXX.com"   
  3.     u_mood="今天放假了" u_state="online" u_mobile="12345678901"   
  4.     u_hometown="山西" u_job="IT软件工程师" u_avatar="w34353453543r53" />  
第二步:使用 trang.jar 转化为xsd文件。在命令行执行: 

[html]  view plain copy
  1. java -jar D:\lib\trang.jar user.xml user.xsd  
下面,是生成的User.java。 
[java]  view plain copy
  1. //  
  2. // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vJAXB 2.1.10 in JDK 6   
  3. // See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>   
  4. // Any modifications to this file will be lost upon recompilation of the source schema.   
  5. // Generated on: 2011.11.13 at 01:26:07 ���� CST   
  6. //  
  7.   
  8.   
  9. package com.moto.server.bean;  
  10.   
  11. import java.math.BigInteger;  
  12. import javax.xml.bind.annotation.XmlAccessType;  
  13. import javax.xml.bind.annotation.XmlAccessorType;  
  14. import javax.xml.bind.annotation.XmlAttribute;  
  15. import javax.xml.bind.annotation.XmlRootElement;  
  16. import javax.xml.bind.annotation.XmlSchemaType;  
  17. import javax.xml.bind.annotation.XmlType;  
  18. import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;  
  19. import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;  
  20.   
  21.   
  22. /** 
  23.  * <p>Java class for anonymous complex type. 
  24.  *  
  25.  * <p>The following schema fragment specifies the expected content contained within this class. 
  26.  *  
  27.  * <pre> 
  28.  * <complexType> 
  29.  *   <complexContent> 
  30.  *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType"> 
  31.  *       <attribute name="u_avatar" use="required" type="{http://www.w3.org/2001/XMLSchema}NCName" /> 
  32.  *       <attribute name="u_email" use="required" type="{http://www.w3.org/2001/XMLSchema}anySimpleType" /> 
  33.  *       <attribute name="u_hometown" use="required" type="{http://www.w3.org/2001/XMLSchema}NCName" /> 
  34.  *       <attribute name="u_id" use="required" type="{http://www.w3.org/2001/XMLSchema}integer" /> 
  35.  *       <attribute name="u_job" use="required" type="{http://www.w3.org/2001/XMLSchema}NCName" /> 
  36.  *       <attribute name="u_mobile" use="required" type="{http://www.w3.org/2001/XMLSchema}integer" /> 
  37.  *       <attribute name="u_mood" use="required" type="{http://www.w3.org/2001/XMLSchema}NCName" /> 
  38.  *       <attribute name="u_name" use="required" type="{http://www.w3.org/2001/XMLSchema}NCName" /> 
  39.  *       <attribute name="u_state" use="required" type="{http://www.w3.org/2001/XMLSchema}NCName" /> 
  40.  *     </restriction> 
  41.  *   </complexContent> 
  42.  * </complexType> 
  43.  * </pre> 
  44.  *  
  45.  *  
  46.  */  
  47. @XmlAccessorType(XmlAccessType.FIELD)  
  48. @XmlType(name = "")  
  49. @XmlRootElement(name = "User")  
  50. public class User {  
  51.   
  52.     @XmlAttribute(name = "u_avatar", required = true)  
  53.     @XmlJavaTypeAdapter(CollapsedStringAdapter.class)  
  54.     @XmlSchemaType(name = "NCName")  
  55.     protected String uAvatar;  
  56.     @XmlAttribute(name = "u_email", required = true)  
  57.     @XmlSchemaType(name = "anySimpleType")  
  58.     protected String uEmail;  
  59.     @XmlAttribute(name = "u_hometown", required = true)  
  60.     @XmlJavaTypeAdapter(CollapsedStringAdapter.class)  
  61.     @XmlSchemaType(name = "NCName")  
  62.     protected String uHometown;  
  63.     @XmlAttribute(name = "u_id", required = true)  
  64.     protected BigInteger uId;  
  65.     @XmlAttribute(name = "u_job", required = true)  
  66.     @XmlJavaTypeAdapter(CollapsedStringAdapter.class)  
  67.     @XmlSchemaType(name = "NCName")  
  68.     protected String uJob;  
  69.     @XmlAttribute(name = "u_mobile", required = true)  
  70.     protected BigInteger uMobile;  
  71.     @XmlAttribute(name = "u_mood", required = true)  
  72.     @XmlJavaTypeAdapter(CollapsedStringAdapter.class)  
  73.     @XmlSchemaType(name = "NCName")  
  74.     protected String uMood;  
  75.     @XmlAttribute(name = "u_name", required = true)  
  76.     @XmlJavaTypeAdapter(CollapsedStringAdapter.class)  
  77.     @XmlSchemaType(name = "NCName")  
  78.     protected String uName;  
  79.     @XmlAttribute(name = "u_state", required = true)  
  80.     @XmlJavaTypeAdapter(CollapsedStringAdapter.class)  
  81.     @XmlSchemaType(name = "NCName")  
  82.     protected String uState;  
  83.   
  84.     /** 
  85.      * Gets the value of the uAvatar property. 
  86.      *  
  87.      * @return 
  88.      *     possible object is 
  89.      *     {@link String } 
  90.      *      
  91.      */  
  92.     public String getUAvatar() {  
  93.         return uAvatar;  
  94.     }  
  95.   
  96.     /** 
  97.      * Sets the value of the uAvatar property. 
  98.      *  
  99.      * @param value 
  100.      *     allowed object is 
  101.      *     {@link String } 
  102.      *      
  103.      */  
  104.     public void setUAvatar(String value) {  
  105.         this.uAvatar = value;  
  106.     }  
  107.   
  108.     /** 
  109.      * Gets the value of the uEmail property. 
  110.      *  
  111.      * @return 
  112.      *     possible object is 
  113.      *     {@link String } 
  114.      *      
  115.      */  
  116.     public String getUEmail() {  
  117.         return uEmail;  
  118.     }  
  119.   
  120.     /** 
  121.      * Sets the value of the uEmail property. 
  122.      *  
  123.      * @param value 
  124.      *     allowed object is 
  125.      *     {@link String } 
  126.      *      
  127.      */  
  128.     public void setUEmail(String value) {  
  129.         this.uEmail = value;  
  130.     }  
  131.   
  132.     /** 
  133.      * Gets the value of the uHometown property. 
  134.      *  
  135.      * @return 
  136.      *     possible object is 
  137.      *     {@link String } 
  138.      *      
  139.      */  
  140.     public String getUHometown() {  
  141.         return uHometown;  
  142.     }  
  143.   
  144.     /** 
  145.      * Sets the value of the uHometown property. 
  146.      *  
  147.      * @param value 
  148.      *     allowed object is 
  149.      *     {@link String } 
  150.      *      
  151.      */  
  152.     public void setUHometown(String value) {  
  153.         this.uHometown = value;  
  154.     }  
  155.   
  156.     /** 
  157.      * Gets the value of the uId property. 
  158.      *  
  159.      * @return 
  160.      *     possible object is 
  161.      *     {@link BigInteger } 
  162.      *      
  163.      */  
  164.     public BigInteger getUId() {  
  165.         return uId;  
  166.     }  
  167.   
  168.     /** 
  169.      * Sets the value of the uId property. 
  170.      *  
  171.      * @param value 
  172.      *     allowed object is 
  173.      *     {@link BigInteger } 
  174.      *      
  175.      */  
  176.     public void setUId(BigInteger value) {  
  177.         this.uId = value;  
  178.     }  
  179.   
  180.     /** 
  181.      * Gets the value of the uJob property. 
  182.      *  
  183.      * @return 
  184.      *     possible object is 
  185.      *     {@link String } 
  186.      *      
  187.      */  
  188.     public String getUJob() {  
  189.         return uJob;  
  190.     }  
  191.   
  192.     /** 
  193.      * Sets the value of the uJob property. 
  194.      *  
  195.      * @param value 
  196.      *     allowed object is 
  197.      *     {@link String } 
  198.      *      
  199.      */  
  200.     public void setUJob(String value) {  
  201.         this.uJob = value;  
  202.     }  
  203.   
  204.     /** 
  205.      * Gets the value of the uMobile property. 
  206.      *  
  207.      * @return 
  208.      *     possible object is 
  209.      *     {@link BigInteger } 
  210.      *      
  211.      */  
  212.     public BigInteger getUMobile() {  
  213.         return uMobile;  
  214.     }  
  215.   
  216.     /** 
  217.      * Sets the value of the uMobile property. 
  218.      *  
  219.      * @param value 
  220.      *     allowed object is 
  221.      *     {@link BigInteger } 
  222.      *      
  223.      */  
  224.     public void setUMobile(BigInteger value) {  
  225.         this.uMobile = value;  
  226.     }  
  227.   
  228.     /** 
  229.      * Gets the value of the uMood property. 
  230.      *  
  231.      * @return 
  232.      *     possible object is 
  233.      *     {@link String } 
  234.      *      
  235.      */  
  236.     public String getUMood() {  
  237.         return uMood;  
  238.     }  
  239.   
  240.     /** 
  241.      * Sets the value of the uMood property. 
  242.      *  
  243.      * @param value 
  244.      *     allowed object is 
  245.      *     {@link String } 
  246.      *      
  247.      */  
  248.     public void setUMood(String value) {  
  249.         this.uMood = value;  
  250.     }  
  251.   
  252.     /** 
  253.      * Gets the value of the uName property. 
  254.      *  
  255.      * @return 
  256.      *     possible object is 
  257.      *     {@link String } 
  258.      *      
  259.      */  
  260.     public String getUName() {  
  261.         return uName;  
  262.     }  
  263.   
  264.     /** 
  265.      * Sets the value of the uName property. 
  266.      *  
  267.      * @param value 
  268.      *     allowed object is 
  269.      *     {@link String } 
  270.      *      
  271.      */  
  272.     public void setUName(String value) {  
  273.         this.uName = value;  
  274.     }  
  275.   
  276.     /** 
  277.      * Gets the value of the uState property. 
  278.      *  
  279.      * @return 
  280.      *     possible object is 
  281.      *     {@link String } 
  282.      *      
  283.      */  
  284.     public String getUState() {  
  285.         return uState;  
  286.     }  
  287.   
  288.     /** 
  289.      * Sets the value of the uState property. 
  290.      *  
  291.      * @param value 
  292.      *     allowed object is 
  293.      *     {@link String } 
  294.      *      
  295.      */  
  296.     public void setUState(String value) {  
  297.         this.uState = value;  
  298.     }  
  299.   
  300. }  

这篇关于JAXB的用法及介绍的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/816167

相关文章

性能测试介绍

性能测试是一种测试方法,旨在评估系统、应用程序或组件在现实场景中的性能表现和可靠性。它通常用于衡量系统在不同负载条件下的响应时间、吞吐量、资源利用率、稳定性和可扩展性等关键指标。 为什么要进行性能测试 通过性能测试,可以确定系统是否能够满足预期的性能要求,找出性能瓶颈和潜在的问题,并进行优化和调整。 发现性能瓶颈:性能测试可以帮助发现系统的性能瓶颈,即系统在高负载或高并发情况下可能出现的问题

水位雨量在线监测系统概述及应用介绍

在当今社会,随着科技的飞速发展,各种智能监测系统已成为保障公共安全、促进资源管理和环境保护的重要工具。其中,水位雨量在线监测系统作为自然灾害预警、水资源管理及水利工程运行的关键技术,其重要性不言而喻。 一、水位雨量在线监测系统的基本原理 水位雨量在线监测系统主要由数据采集单元、数据传输网络、数据处理中心及用户终端四大部分构成,形成了一个完整的闭环系统。 数据采集单元:这是系统的“眼睛”,

Hadoop数据压缩使用介绍

一、压缩原则 (1)运算密集型的Job,少用压缩 (2)IO密集型的Job,多用压缩 二、压缩算法比较 三、压缩位置选择 四、压缩参数配置 1)为了支持多种压缩/解压缩算法,Hadoop引入了编码/解码器 2)要在Hadoop中启用压缩,可以配置如下参数

每天认识几个maven依赖(ActiveMQ+activemq-jaxb+activesoap+activespace+adarwin)

八、ActiveMQ 1、是什么? ActiveMQ 是一个开源的消息中间件(Message Broker),由 Apache 软件基金会开发和维护。它实现了 Java 消息服务(Java Message Service, JMS)规范,并支持多种消息传递协议,包括 AMQP、MQTT 和 OpenWire 等。 2、有什么用? 可靠性:ActiveMQ 提供了消息持久性和事务支持,确保消

图神经网络模型介绍(1)

我们将图神经网络分为基于谱域的模型和基于空域的模型,并按照发展顺序详解每个类别中的重要模型。 1.1基于谱域的图神经网络         谱域上的图卷积在图学习迈向深度学习的发展历程中起到了关键的作用。本节主要介绍三个具有代表性的谱域图神经网络:谱图卷积网络、切比雪夫网络和图卷积网络。 (1)谱图卷积网络 卷积定理:函数卷积的傅里叶变换是函数傅里叶变换的乘积,即F{f*g}

C++——stack、queue的实现及deque的介绍

目录 1.stack与queue的实现 1.1stack的实现  1.2 queue的实现 2.重温vector、list、stack、queue的介绍 2.1 STL标准库中stack和queue的底层结构  3.deque的简单介绍 3.1为什么选择deque作为stack和queue的底层默认容器  3.2 STL中对stack与queue的模拟实现 ①stack模拟实现

bytes.split的用法和注意事项

当然,我很乐意详细介绍 bytes.Split 的用法和注意事项。这个函数是 Go 标准库中 bytes 包的一个重要组成部分,用于分割字节切片。 基本用法 bytes.Split 的函数签名如下: func Split(s, sep []byte) [][]byte s 是要分割的字节切片sep 是用作分隔符的字节切片返回值是一个二维字节切片,包含分割后的结果 基本使用示例: pa

Mysql BLOB类型介绍

BLOB类型的字段用于存储二进制数据 在MySQL中,BLOB类型,包括:TinyBlob、Blob、MediumBlob、LongBlob,这几个类型之间的唯一区别是在存储的大小不同。 TinyBlob 最大 255 Blob 最大 65K MediumBlob 最大 16M LongBlob 最大 4G

FreeRTOS-基本介绍和移植STM32

FreeRTOS-基本介绍和STM32移植 一、裸机开发和操作系统开发介绍二、任务调度和任务状态介绍2.1 任务调度2.1.1 抢占式调度2.1.2 时间片调度 2.2 任务状态 三、FreeRTOS源码和移植STM323.1 FreeRTOS源码3.2 FreeRTOS移植STM323.2.1 代码移植3.2.2 时钟中断配置 一、裸机开发和操作系统开发介绍 裸机:前后台系

nginx介绍及常用功能

什么是nginx nginx跟Apache一样,是一个web服务器(网站服务器),通过HTTP协议提供各种网络服务。 Apache:重量级的,不支持高并发的服务器。在Apache上运行数以万计的并发访问,会导致服务器消耗大量内存。操作系统对其进行进程或线程间的切换也消耗了大量的CPU资源,导致HTTP请求的平均响应速度降低。这些都决定了Apache不可能成为高性能WEB服务器  nginx: