`
wode66
  • 浏览: 744023 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

JAXB--@XmlElementWrapper注解(二)

阅读更多

在JAXB标准中,@XmlElementWrapper注解表示生成一个包装 XML 表示形式的包装器元素。 此元素主要用于生成一个包装集合的包装器 XML 元素。因此,该注释支持以下两种形式的序列化。

 

 

 注:@XmlElementWrapper仅允许出现在集合属性上。

 

第一步:定义将要转化的Java对象

 

package step1.wrapper;

import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlElementWrapper;
import javax.xml.bind.annotation.XmlRootElement;

@XmlRootElement
public class Customer {
	String[] names;
	int age;
	int id;
	
	//使用@XmlElementWrapper注解后,将会在原xml结点上再包装一层xml
	@XmlElementWrapper(name="allnames")
	@XmlElement(name="myname")
	public String[] getNames() {
		return names;
	}
	public void setNames(String[] names) {
		this.names = names;
	}
	
	@XmlElement
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	
	@XmlAttribute
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	
	@Override
	public String toString() {
		return "Customer [id=" + id + ",names=" + names + ",age=" + age + "]";
	}
}

 

第二步:编组

 

 

package step1.wrapper;

import java.io.File;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;

//Marshaller
public class Object2XmlDemo {
	public static void main(String[] args) {

		Customer customer = new Customer();
		customer.setId(100);
		customer.setNames(new String[]{"name-a","name-b","name-c"});
		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:

 

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<customer id="100">
    <age>29</age>
    <allnames>
        <myname>name-a</myname>
        <myname>name-b</myname>
        <myname>name-c</myname>
    </allnames>
</customer>
分享到:
评论

相关推荐

    使用JAXB(用于XML绑定的Java API)解决现实世界问题的7个步骤

    3. **生成JAXB元数据**:有两种方法可以生成元数据,一是手动编写,二是利用JAXB的工具自动生成。例如,你可以使用`xjc`命令行工具,通过XML Schema(XSD)文件自动生成对应的Java类。 4. **创建Unmarshaller和...

    20150914-jaxb-experimental

    6. **定制化绑定**:如果默认的绑定不符合需求,可以通过创建`@XmlAccessorType`, `@XmlType`, `@XmlElementWrapper`, `@XmlSeeAlso`, `@XmlElementRef`等更多的注解来定制转换规则。 在20150914-jaxb-experimental...

    JAXB简易教程

    JAXB的核心在于`@XmlRootElement`和`@XmlElement`注解。`@XmlRootElement`用于标记一个Java类,表示这个类可以被映射为XML的根元素;`@XmlElement`则用于标记类的属性,表示这些属性将映射为XML元素。 例如,有一个...

    jaxb生成XML例子

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

    《Jaxb2 转换XML文档》学习笔记

    JAXB2是JAXB的第二个主要版本,引入了更多功能和改进,使其在处理XML数据时更为灵活和高效。在本文中,我们将深入探讨JAXB2如何帮助我们转换Java对象到XML以及XML到Java对象。 1. **JAXB2简介** JAXB2提供了基于...

    最新JAXB解析XML教程

    5. **Handling Collections**: 对于Java集合,如ArrayList或Set,JAXB提供了一种自动处理它们的方法,通过使用`@XmlElementWrapper`和`@XmlElement`注解,可以将集合转换为XML元素的数组或列表。 6. **Custom ...

    JAXB开发步骤

    这些注解如@XmlRootElement、@XmlElement和@XmlElementWrapper告诉JAXB对象的哪些属性应该被转换成XML元素。 当执行对象到XML的转换时,JAXB首先会根据注解解析Java对象的结构,然后生成相应的XML文档。每个Java类...

    XML JAXB入门示例

    JAXB使用注解(Annotations)来定义这些类如何映射到XML结构。常见的注解包括: 1. `@XmlRootElement`:标记一个类作为XML文档的根元素。 2. `@XmlElement`:将类的字段映射为XML元素。 3. `@XmlAttribute`:将类的...

    JaxbUtil.zip_jaxb

    - JAXB默认不处理Java集合类型的转换,需要使用`@XmlElementWrapper`注解包裹集合,并使用`@XmlElement`注解标记集合中的元素。 - 为了提高性能,可以缓存`Unmarshaller`和`Marshaller`实例,但需注意线程安全问题。...

    jaxb+list+实体,实现对xml读写

    `@XmlRootElement`注解表示这是一个可被JAXB处理的根元素,`@XmlElement`表示该字段应该作为XML元素进行序列化或反序列化: ```java @XmlRootElement(name = "student") public class Student { @XmlElement(name ...

    Jaxb2实现JavaBean与xml互转的方法详解

    Jaxb2引入了新的特性和功能,如注解(Annotation),使得JavaBean到XML的转换更加方便和灵活。 1. **JAXBContext**:这是整个JAXB框架的核心,它负责管理和存储XML/Java绑定信息。通过提供类路径或者包名,我们可以...

    [转载] JAXB中Java对象和XML之间的转换

    4. **注解驱动的绑定**: JAXB支持使用注解来定制Java类和XML之间的映射。例如,`@XmlElementWrapper`用于封装一组元素,`@XmlAttribute`用于将属性映射到Java类的字段。 5. **数据绑定上下文**: `JAXBContext`是...

    使用jaxb将XML转化为JAVA BEAN

    通过使用`@XmlElementWrapper`、`@XmlAccessorType`等注解,可以定制更复杂的映射规则。 除了基本的注解,JAXB还提供了许多高级功能,如自定义XML命名空间、类型转换、国际化支持、数据绑定到XML Schema等。对于...

    java 使用 JAXB 将xml转换为 bean 包含xml和dto和读取文件的util类

    JAXB提供了一种自动的方式,通过注解或者绑定文件来定义Java类和XML元素之间的映射关系。一旦建立了这种映射,我们就可以使用`Unmarshaller`来将XML文档解析为Java对象,或使用`Marshaller`将Java对象序列化为XML...

    Java与XML数据绑定

    对于集合,可以通过`@XmlElementWrapper`注解来创建一个包含多个元素的XML元素。 7. **处理XML命名空间(Namespaces)** 在处理包含命名空间的XML文档时,可以使用`@XmlElement.Namespace`和`@XmlSchema.Namespace...

    JAVA XML转化BEEN

    - **注解Java Bean**: 使用JAXB注解,可以在Java类和字段上声明它们与XML元素和属性的关系。例如,`@XmlRootElement`注解表示该类对应XML文档的根元素,`@XmlElement`注解表示字段对应XML元素。 ```java @...

    advancedXml:JAXB 和 Web 服务

    1. **对象到XML:** JAXB使用`@XmlElement`、`@XmlAttribute`等注解将Java类的属性映射到XML元素或属性。然后,通过`Marshaller`接口将Java对象转换为XML文档。 2. **XML到对象:** 反之,JAXB利用`Unmarshaller`...

    XML动态转化为ObjectDemo

    - JAXB处理XML时,会忽略Java对象的私有字段,除非它们带有`@XmlElement`等注解。 - XML属性与Java字段的映射可以通过注解如`@XmlElement`, `@XmlAttribute`, `@XmlRootElement`等进行控制。 - 在处理复杂XML结构...

    AnnotationParseXml:jAXB 解析 Xml

    本篇文章将深入探讨JAXB注解解析XML的相关知识。 ### JAXB概述 JAXB允许开发者通过在Java类上使用注解来定义XML结构,从而简化了XML处理。这种映射机制使得XML序列化和反序列化过程变得更加直观和高效。JAXB的核心...

Global site tag (gtag.js) - Google Analytics