一、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;

package com.mkyong.core; import javax.xml.bind.annotation.XmlAttribute;import javax.xml.bind.annotation.XmlElement;import javax.xml.bind.annotation.XmlRootElement; @XmlRootElementpublic class Customer {  String name; int age; int id;  public String getName() {  return name; }  @XmlElement public void setName(String name) {  this.name = name; }  public int getAge() {  return age; }  @XmlElement public void setAge(int age) {  this.age = age; }  public int getId() {  return id; }  @XmlAttribute public void setId(int id) {  this.id = id; } }

   第三步:main方法把java bean转化为xml字符串

package com.mkyong.core; import java.io.File;import javax.xml.bind.JAXBContext;import javax.xml.bind.JAXBException;import javax.xml.bind.Marshaller; public class JAXBExample { public static void main(String[] args) {    Customer customer = new Customer();   customer.setId(100);   customer.setName("mkyong");   customer.setAge(29);    try {   File file = new File("C:\\file.xml");  JAXBContext jaxbContext = JAXBContext.newInstance(Customer.class);  Marshaller jaxbMarshaller = jaxbContext.createMarshaller();   // output pretty printed  jaxbMarshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);   jaxbMarshaller.marshal(customer, file);  jaxbMarshaller.marshal(customer, System.out);        } catch (JAXBException e) {  e.printStackTrace();       }  }}

  下面是输出:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?><customer id="100">    <age>29</age>    <name>mkyong</name></customer>

四、jaxb开发常用

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

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

<?xml version="1.0" encoding="UTF-8"?><User u_id="1" u_name="moto" u_email="aaa@XXX.com"  u_mood="今天放假了" u_state="online" u_mobile="12345678901"  u_hometown="山西" u_job="IT软件工程师" u_avatar="w34353453543r53" />

第二步:使用trang.jar转化为xsd文件。在命令行执行:

java -jar D:\lib\trang.jar user.xml user.xsd

下面,是生成的User.java。

//// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vJAXB 2.1.10 in JDK 6 // See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> // Any modifications to this file will be lost upon recompilation of the source schema. // Generated on: 2011.11.13 at 01:26:07 ���� CST //package com.moto.server.bean;import java.math.BigInteger;import javax.xml.bind.annotation.XmlAccessType;import javax.xml.bind.annotation.XmlAccessorType;import javax.xml.bind.annotation.XmlAttribute;import javax.xml.bind.annotation.XmlRootElement;import javax.xml.bind.annotation.XmlSchemaType;import javax.xml.bind.annotation.XmlType;import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;/** * <p>Java class for anonymous complex type. *  * <p>The following schema fragment specifies the expected content contained within this class. *  * <pre> * <complexType> *   <complexContent> *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType"> *       <attribute name="u_avatar" use="required" type="{http://www.w3.org/2001/XMLSchema}NCName" /> *       <attribute name="u_email" use="required" type="{http://www.w3.org/2001/XMLSchema}anySimpleType" /> *       <attribute name="u_hometown" use="required" type="{http://www.w3.org/2001/XMLSchema}NCName" /> *       <attribute name="u_id" use="required" type="{http://www.w3.org/2001/XMLSchema}integer" /> *       <attribute name="u_job" use="required" type="{http://www.w3.org/2001/XMLSchema}NCName" /> *       <attribute name="u_mobile" use="required" type="{http://www.w3.org/2001/XMLSchema}integer" /> *       <attribute name="u_mood" use="required" type="{http://www.w3.org/2001/XMLSchema}NCName" /> *       <attribute name="u_name" use="required" type="{http://www.w3.org/2001/XMLSchema}NCName" /> *       <attribute name="u_state" use="required" type="{http://www.w3.org/2001/XMLSchema}NCName" /> *     </restriction> *   </complexContent> * </complexType> * </pre> *  *  */@XmlAccessorType(XmlAccessType.FIELD)@XmlType(name = "")@XmlRootElement(name = "User")public class User {    @XmlAttribute(name = "u_avatar", required = true)    @XmlJavaTypeAdapter(CollapsedStringAdapter.class)    @XmlSchemaType(name = "NCName")    protected String uAvatar;    @XmlAttribute(name = "u_email", required = true)    @XmlSchemaType(name = "anySimpleType")    protected String uEmail;    @XmlAttribute(name = "u_hometown", required = true)    @XmlJavaTypeAdapter(CollapsedStringAdapter.class)    @XmlSchemaType(name = "NCName")    protected String uHometown;    @XmlAttribute(name = "u_id", required = true)    protected BigInteger uId;    @XmlAttribute(name = "u_job", required = true)    @XmlJavaTypeAdapter(CollapsedStringAdapter.class)    @XmlSchemaType(name = "NCName")    protected String uJob;    @XmlAttribute(name = "u_mobile", required = true)    protected BigInteger uMobile;    @XmlAttribute(name = "u_mood", required = true)    @XmlJavaTypeAdapter(CollapsedStringAdapter.class)    @XmlSchemaType(name = "NCName")    protected String uMood;    @XmlAttribute(name = "u_name", required = true)    @XmlJavaTypeAdapter(CollapsedStringAdapter.class)    @XmlSchemaType(name = "NCName")    protected String uName;    @XmlAttribute(name = "u_state", required = true)    @XmlJavaTypeAdapter(CollapsedStringAdapter.class)    @XmlSchemaType(name = "NCName")    protected String uState;    /**     * Gets the value of the uAvatar property.     *      * @return     *     possible object is     *     {@link String }     *          */    public String getUAvatar() {        return uAvatar;    }    /**     * Sets the value of the uAvatar property.     *      * @param value     *     allowed object is     *     {@link String }     *          */    public void setUAvatar(String value) {        this.uAvatar = value;    }    /**     * Gets the value of the uEmail property.     *      * @return     *     possible object is     *     {@link String }     *          */    public String getUEmail() {        return uEmail;    }    /**     * Sets the value of the uEmail property.     *      * @param value     *     allowed object is     *     {@link String }     *          */    public void setUEmail(String value) {        this.uEmail = value;    }    /**     * Gets the value of the uHometown property.     *      * @return     *     possible object is     *     {@link String }     *          */    public String getUHometown() {        return uHometown;    }    /**     * Sets the value of the uHometown property.     *      * @param value     *     allowed object is     *     {@link String }     *          */    public void setUHometown(String value) {        this.uHometown = value;    }    /**     * Gets the value of the uId property.     *      * @return     *     possible object is     *     {@link BigInteger }     *          */    public BigInteger getUId() {        return uId;    }    /**     * Sets the value of the uId property.     *      * @param value     *     allowed object is     *     {@link BigInteger }     *          */    public void setUId(BigInteger value) {        this.uId = value;    }    /**     * Gets the value of the uJob property.     *      * @return     *     possible object is     *     {@link String }     *          */    public String getUJob() {        return uJob;    }    /**     * Sets the value of the uJob property.     *      * @param value     *     allowed object is     *     {@link String }     *          */    public void setUJob(String value) {        this.uJob = value;    }    /**     * Gets the value of the uMobile property.     *      * @return     *     possible object is     *     {@link BigInteger }     *          */    public BigInteger getUMobile() {        return uMobile;    }    /**     * Sets the value of the uMobile property.     *      * @param value     *     allowed object is     *     {@link BigInteger }     *          */    public void setUMobile(BigInteger value) {        this.uMobile = value;    }    /**     * Gets the value of the uMood property.     *      * @return     *     possible object is     *     {@link String }     *          */    public String getUMood() {        return uMood;    }    /**     * Sets the value of the uMood property.     *      * @param value     *     allowed object is     *     {@link String }     *          */    public void setUMood(String value) {        this.uMood = value;    }    /**     * Gets the value of the uName property.     *      * @return     *     possible object is     *     {@link String }     *          */    public String getUName() {        return uName;    }    /**     * Sets the value of the uName property.     *      * @param value     *     allowed object is     *     {@link String }     *          */    public void setUName(String value) {        this.uName = value;    }    /**     * Gets the value of the uState property.     *      * @return     *     possible object is     *     {@link String }     *          */    public String getUState() {        return uState;    }    /**     * Sets the value of the uState property.     *      * @param value     *     allowed object is     *     {@link String }     *          */    public void setUState(String value) {        this.uState = value;    }}

转载自:https://blog.csdn.net/hfrujhv/article/details/83788497

Jaxb的优点与用法(bean转xml的插件,简化webservice接口的开发工作量)的更多相关文章

  1. 7 -- Spring的基本用法 -- 11... 基于XML Schema的简化配置方式

    7.11 基于XML Schema的简化配置方式 Spring允许使用基于XML Schema的配置方式来简化Spring配置文件. 7.11.1 使用p:命名空间简化配置 p:命名空间不需要特定的S ...

  2. 使用JAXB实现Bean与Xml相互转换

    最近几天,我自己负责的应用这边引入了一个新的合作方,主要是我这边调用他们的接口,但是有个很坑的地方,他们传参居然不支持json格式,并且只支持xml格式进行交互,于是自己写了一个工具类去支持bean与 ...

  3. JAVA bean与XML互转的利器---XStream

    最近在项目中遇到了JAVA bean 和XML互转的需求, 本来准备循规蹈矩使用dom4j忽然想起来之前曾接触过的XStream, 一番研究豁然开朗,利器啊利器, 下来就XStream的一些用法与大家 ...

  4. JAVA Bean和XML之间的相互转换 - XStream简单入门

    JAVA Bean和XML之间的相互转换 - XStream简单入门 背景介绍 XStream的简介 注解简介 应用实例 背景介绍 我们在工作中经常 遇到文件解析为数据或者数据转化为xml文件的情况, ...

  5. java JAXB + STAX(是一种针对XML的流式拉分析API)读取xml

    JDK1.5需要添加jar包,1.6以后就不需要了<dependency> <groupId>stax</groupId> <artifactId>st ...

  6. Spring基础使用(一)--------IOC、Bean的XML方式装配

    基础 1.xml文件基础格式: <?xml version="1.0" encoding="UTF-8" ?> <beans xmlns=&q ...

  7. dom4j+反射实现bean与xml的相互转换

    由于目前在工作中一直用的dom4j+反射实现bean与xml的相互转换,记录一下,如果有不正确的地方欢迎大家指正~~~ 一.反射机制 在此工具类中使用到了反射技术,所以提前也看了一些知识点,例如:ht ...

  8. notepad++ 编辑xml的插件和使用方法

    notepad++ 编辑xml的插件和使用方法.mark http://blog.csdn.net/wangnan537/article/details/48712233

  9. Win 10 开发中Adaptive磁贴模板的XML文档结构,Win10 应用开发中自适应Toast通知的XML文档结构

    分享两篇Win 10应用开发的XML文档结构:Win 10 开发中Adaptive磁贴模板的XML文档结构,Win10 应用开发中自适应Toast通知的XML文档结构. Win 10 开发中Adapt ...

随机推荐

  1. 自定义函数和调用函数 return返回值

    1.Q: 为什么要有函数,函数是什么? A: 函数能提高应用的模块性,和代码的重复利用率 2. 函数分为两个阶段: 1.定义阶段 2.调用阶段 3.关于函数调用: 01.函数的内存地址加上()就是调用 ...

  2. K8s - 解决主机重启后kubelet无法自动启动问题 错误:The connection to the server 192.168.60.128:6443 was refused - did you specify the right host or port?

    1,问题描述 (1)在安装配置好 Kubernetes 后,正常情况下服务器关机重启,kubelet 也会自动启动的.但最近配置的一台服务器重启后,输入命令 kubectl get nodes 查看节 ...

  3. .NET6 平台系列1 .NET发展史之.NET Framework简介

    系列目录     [已更新最新开发文章,点击查看详细] 自1995年互联网战略日以来最雄心勃勃的事业 -- 微软.NET战略, 2000年6月30日. 微软公司于2002年2月13日正式推出第一代.N ...

  4. 一.文件处理和json模块(容易混淆知识点即用法)

    一.文件处理 注意点1: 打开文件包含两部分资源:操作系统级打开得文件+应用程序的变量. 在操作完毕一个文件时,必须把该文件的两部分资源一个不落的回收 如下: f.close() #回收操作系统级打开 ...

  5. JAVAEE_Servlet_06_ServletContext接口

    ServletContext接口 * javax.servlet.ServletContext * Tomcat服务器中ServletContecxt的完整类名: ServletContext:org ...

  6. Nginx篇

    1 基本操作命令 先CD到nginx.exe目录 启动nginx服务 nginx start nginx 优雅停止nginx,有连接时会等连接请求完成再杀死worker进程 nginx -s quit ...

  7. 4.Linux命令基本格式与简单使用

    Linux命令名组成: 在Linux/Unix系统下输入命令,就会进行相应的操作,那么这个命令有如下组成: 命令名 [选项] [参数] 注:[]的内容代表可选 命令实例: ls #显示当前文件夹下的所 ...

  8. 04- HTML常用标签

    HTML标签分类 通过上节博客我们知道了网页的组成:文字 图片 连接 视频 音频.在HTML页面中,带有"< >"符号的元素被称为HTML标签,如上面提到的 <H ...

  9. 软件篇-04-OMPL和FCL用于SLAM轨迹规划

    使用OMPL内置的infoRRTstar算法模块和FCL碰撞检测库实现当前点和目标点的轨迹规划, 参考文章:https://www.cnblogs.com/shhu1993/p/7062099.htm ...

  10. POJ3114强连通+spfa

    题意:       给你n个点,m条有向边,q询问,每次询问给两个数a,b输出a->b的最短路,但是题目有个限制,就是在一个环上的任意两点距离为0. 思路:       简单题目,直接强连通压缩 ...