`

JAXB中各种常见注解小结

阅读更多
在JAXB中(用于JAVA对象和xml之间的转换),经常出现各类的 @XmlElement这样的标记,
下面就来以一个例子小结下,加深学习:


import java.util.*;
import javax.xml.bind.annotation.*;
 
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class Customer {
 
    private List<String> emailAddresses;
     
    public Customer() {
        emailAddresses = new ArrayList<String>();
    }
 
    public List<String> getEmailAddresses() {
        return emailAddresses;
    }
 
    public void setEmailAddresses(List<String> emailAddresses) {
        this.emailAddresses = emailAddresses;
    }
 
}



这个是一个典型的POJO了,其中引用了对象emailAddress,是一个List,那么下面演示各类用法:
  先看默认的调用代码如下:
import javax.xml.bind.JAXBContext;
import javax.xml.bind.Marshaller;
 
public class Demo {
 
    public static void main(String[] args) throws Exception {
        JAXBContext jc = JAXBContext.newInstance(Customer.class);
 
        Customer customer = new Customer();
        customer.getEmailAddresses().add("janed@example.com");
        customer.getEmailAddresses().add("jdoe@example.org");
 
        Marshaller marshaller = jc.createMarshaller();
        marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
        marshaller.marshal(customer, System.out);
    }
}


  默认的把这个对象输出为一般的XML:
<customer>
    <emailAddresses>janed@example.com</emailAddresses>
    <emailAddresses>jdoe@example.org</emailAddresses>
</customer>

下面逐一看每个注解的用法
1) @XmlElement
  
@XmlElement(name="email-address")
    private List<String> emailAddresses;
加上这个注解的话,则按自定义的xml标签名去输出某个属性,如下:
<customer>
    <email-address>janed@example.com</email-address>
    <email-address>jdoe@example.org</email-address>
</customer>

2) @XmlElementWrapper
  这个注解等于在最外面再包一层了,
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class Customer {

    @XmlElementWrapper(name="email-addresses")
    @XmlElement(name="email-address")
    private List<String> emailAddresses;

}
  输出:
<customer>
    <email-addresses>
        <email-address>janed@example.com</email-address>
        <email-address>jdoe@example.org</email-address>
    </email-addresses>
</customer>


3) @XmlList
  这个等于是在同一行中,把list中的输出,以空格形式分隔开来,
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class Customer {
 
    @XmlList
    private List<String> emailAddresses;
 
}


  输出:
  <customer>
    <emailAddresses>janed@example.com jdoe@example.org</emailAddresses>
</customer>

4)
@XmlList和 @XmlAttribute混合使用
      @XmlList
    @XmlAttribute
    private List<String> emailAddresses;

输出:
   <customer
    emailAddresses="janed@example.com jdoe@example.org"/>

看到没?就是同一行中逗号输出,并作为customer的一个属性


5)
  @XmlList 和 @XmlValue混用
   
    @XmlList
    @XmlValue
    private List<String> emailAddresses;
 

就是把emailAddress的list的值,作为<customer>的value  输出,结果如下:
<customer>janed@example.com jdoe@example.org</customer>
 
8
7
分享到:
评论
2 楼 shihengli2010 2016-05-09  
shihengli2010 写道
Customer customer = new Customer(); 
代码有测试过吗?

抱歉 代码看错...
1 楼 shihengli2010 2016-05-09  
Customer customer = new Customer(); 
代码有测试过吗?

相关推荐

    JAXB-XML注解

    JAXB-XML 注解 JAXB(Java Architecture for XML Binding) 是一个根据 XML Schema 1.0 将 Java 对象转换为 XML 的绑定框架。JAXB 提供了一些注解来控制 Java 对象和 XML 之间的转换过程。这些注解可以应用于 Java 类...

    JAXB注解相关技术

    ### JAXB注解相关技术 JAXB (Java Architecture for XML Binding) 是一种 Java 技术,它允许将 XML 数据与 Java 对象相互绑定。这使得开发人员能够更容易地处理 XML 数据,将其转换为 Java 对象,或者将 Java 对象...

    idea 中用jaxb 读xml中数据

    在实际开发中,你可能还需要处理XML文件的错误,或者解析更复杂的XML结构,这可能涉及到JAXB的更多高级特性,如命名空间、注解定制等。总的来说,Idea结合JAXB为处理XML数据提供了一种高效且直观的方式。了解和掌握...

    利用jaxb实现xml和bean互转

    2. **注解Java Bean**: 使用JAXB注解如`@XmlRootElement`, `@XmlElement`, `@XmlAttribute`等来标记哪些类、字段应该被映射到XML。 3. **创建Context**: 创建`JAXBContext`对象,它是整个转换过程的核心。它知道...

    JAXB乱码问题解决

    在Java开发中,JAXB(Java Architecture for XML Binding)是一个用于将XML文档和Java对象之间进行绑定的技术。在处理XML文件时,特别是涉及到序列化和反序列化时,可能会遇到字符编码问题,即所谓的“乱码”。这个...

    JAXB-XML注解-应用

    第一步:创建要转化的 Java 对象,该对象需要使用相关注解注释各字段(标注在 get 方法上)。 第二步:编组(Java 对象转 xml),提供多种编组目的地,例如编组到文件或编组到控制台。 五、JAXB 的注解 JAXB 使用...

    JAXB2 jaxb-api.jar jaxb-xjc.jar jaxb-impl.jar activation.jar

    1. **jaxb-api.jar**:这是JAXB2的主要API接口定义,包含了所有的注解和接口,如`@XmlRootElement`、`@XmlElement`等,以及用于转换的核心类,如`Unmarshaller`和`Marshaller`。这个jar文件提供了与XML绑定的基本...

    JAXB的安装包及插件

    **JAXB(Java Architecture for XML Binding)** 是Java平台中用于XML到Java对象绑定的API,它是Java EE和Java SE标准的一部分,允许开发者在Java应用程序中方便地将XML数据转换为Java对象,反之亦然。这个过程极大...

    JAXB的 eclipse插件

    这个插件允许开发者在Eclipse中方便地进行JAXB相关的开发工作,比如生成Java类从XML Schema,或者将Java对象转换为XML。 在Java世界中,JAXB扮演着核心角色,特别是在处理XML数据时。它使得Java程序能够方便地序列...

    jaxb-api-2.1.jar 和 jaxb-impl-2.1.8.jar

    JAXB广泛应用于各种需要XML处理的场景,如Web服务、配置文件解析、数据交换等。在Web服务中,它可以将Java对象自动转换为SOAP消息,或者从SOAP消息中解码出Java对象。在配置文件解析时,JAXB允许开发者定义XML格式的...

    JAXB注解命名空间使用到的jar包

    在描述中提到的"JAXB注解命名空间使用到的jar包"主要指的是那些包含了JAXB注解以及处理命名空间相关功能的库。命名空间在XML中是非常关键的概念,它允许在同一名字的元素和属性之间创建区分,防止命名冲突。JAXB通过...

    jaxb生成XML例子

    在给定的例子中,我们将深入理解如何使用JAXB注解来生成XML。 1. **@XmlType**: 这个注解用于定义类的属性在XML输出中的顺序。在`WriterXml`类中,propOrder 属性指定了"id", "name", "age", "book"这四个属性的...

    jaxb小项目

    一个jaxb小项目的源码,可以帮助理解jaxb的执行和注解。

    jaxb-api jaxb-impl jar

    JAXB允许开发者将XML文档转换为可以直接在Java应用程序中使用的对象,同时也能够将Java对象转换为XML格式的数据。这在处理XML数据时极大地提高了效率和便利性。 `jaxb-api`和`jaxb-impl`是JAXB框架的核心组成部分。...

    javax.rar(jaxb-impl-2.3.0、jaxb-core-2.3.0、jaxb-api-2.3.0)

    在Java开发环境中,`javax.rar`这一提及实际上与RAR压缩库无关,而是涉及到Java的XML绑定(JAXB)技术。标题中的"jaxb-impl-2.3.0、jaxb-core-2.3.0、jaxb-api-2.3.0"是JAXB的不同组件版本号,它们在处理XML到Java...

    jaxb2.3.0依赖jar.rar

    Java Architecture for XML Binding (JAXB) 是Java平台中用于XML到Java对象绑定的标准技术,它允许开发者在Java程序中直接操作XML数据,而无需编写大量的XML解析和序列化代码。JAXB 2.3.0是该技术的一个版本,包含了...

    最新JAXB解析XML教程

    7. **JAXB插件**: 在开发过程中,可能会使用到各种JAXB插件来增强其功能,例如,添加代码生成插件,可以在构建过程中自动生成JAXB绑定文件。 在实际应用中,JAXB广泛用于Web服务、数据交换、配置文件处理等领域。它...

    JAXB 生成XML文件

    2. **注解**:在描述中提到的"JAXB注解"是用于标记Java类和类成员的关键元素,以指示它们如何在XML中表示。例如,`@XmlRootElement`注解标识一个类作为XML文档的根元素,`@XmlElement`注解用于将类的属性映射到XML...

    jaxb api jar

    使用JAXB,开发者首先需要定义Java类来表示XML结构,然后通过JAXB的`@XmlRootElement`和`@XmlElement`等注解来标注这些类,以便JAXB能够理解它们与XML元素的对应关系。接着,可以使用`JAXBContext`来创建一个上下文...

Global site tag (gtag.js) - Google Analytics