导入jaxb所需要的jar文件。注意如果你是jdk1.6的话,不要用jwsdp2.0,2.0支持jdk1.5.
首先定义xsd文件。
players.xsd
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:element name="club" type="Club" />
<xs:complexType name="Club">
<xs:sequence>
<xs:element name="name" type="xs:string" />
<xs:element name="createdDate" type="xs:date" />
<xs:element name="coach" type="xs:string" />
<xs:element name="players" minOccurs="1" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="name" type="xs:string" />
<xs:element name="position" type="xs:string" />
<xs:element name="country" type="xs:string" />
<xs:element name="num" type="xs:string" />
<xs:element name="description" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:schema>
定义xjb文件 playersbinding.xjb
<jxb:bindings version="1.0" xmlns:jxb="http://java.sun.com/xml/ns/jaxb" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<jxb:bindings schemaLocation="players.xsd" node="/xs:schema"><!-- schemaLocation属性是xsd文件的相对路径 -->
<jxb:globalBindings
fixedAttributeAsConstantProperty="true"
collectionType="java.util.ArrayList"
typesafeEnumBase="xs:NCName"
choiceContentProperty="false"
typesafeEnumMemberName="generateError"
enableFailFastCheck="false"
generateIsSetMethod="false"
underscoreBinding="asCharInWord"/>
<jxb:schemaBindings>
<jxb:package name="com.zhuyang.mapping.object"/>
<!-- 这里是生成的JAVA类文件存放包名 -->
<jxb:nameXmlTransform>
<jxb:elementName suffix="Element"/>
</jxb:nameXmlTransform>
</jxb:schemaBindings>
<!-- 这里是定义xsd中一个复合类型与Java类的映射(如果要修改才定义,不修改则不需要) -->
<jxb:bindings node="//xs:complexType[@name='Club']">
<jxb:class name="Club"/>
</jxb:bindings>
</jxb:bindings>
</jxb:bindings>
最后ant脚本用来生成java对象
playersbuild.xml
<project basedir="." default="run">
<!--这里是jwsdp的安装目录 -->
<property name="jwsdp.home" value="C:\axis2\Sun\jwsdp-2.0" />
<!--这里是log4j的安装目录 -->
<property name="log4j.home" value="C:\axis2\o-x-mapping\o-x-mapping\implement\lib" />
<path id="xjc.classpath">
<pathelement path="src" />
<pathelement path="bin" />
<pathelement path="lib" />
<pathelement path="schemas" />
<!--for use with bundled ant-->
<fileset dir="${jwsdp.home}" includes="jaxb/lib/*.jar" />
<fileset dir="${jwsdp.home}" includes="sjsxp/lib/*.jar" />
<fileset dir="${jwsdp.home}" includes="jwsdp-shared/lib/activation.jar" />
<fileset dir="${jwsdp.home}" includes="jwsdp-shared/lib/resolver.jar" />
<fileset dir="${log4j.home}" includes="log4j-1.2.5.jar" />
</path>
<taskdef name="xjc" classname="com.sun.tools.xjc.XJCTask">
<classpath refid="xjc.classpath" />
</taskdef>
<!--compile Java source files-->
<target name="compile" description="Compile all Java source files">
<echo message="Compiling the schema..." />
<!-- mkdir dir="src" /-->
<xjc schema="players.xsd" binding="playersbinding.xjb" destdir="src" />
<echo message="Compiling the java source files..." />
<mkdir dir="bin" />
<javac destdir="bin" debug="on">
<src path="src" />
<classpath refid="xjc.classpath" />
</javac>
</target>
<target name="run" depends="compile" description="Run the sample app">
<echo message="Running the sample application..." />
<java classname="com.zhuyang.mapping.object.Test" fork="true">
<classpath refid="xjc.classpath" />
</java>
</target>
</project>
Test.java
package com.zhuyang.mapping.object;
import java.util.GregorianCalendar;
import java.util.List;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBElement;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
import javax.xml.datatype.DatatypeConfigurationException;
import javax.xml.datatype.DatatypeFactory;
import javax.xml.datatype.XMLGregorianCalendar;
public class Test {
/**
* @param args
* @throws JAXBException
*/
public static void object2xml() throws JAXBException {
JAXBContext jaxbContent = JAXBContext
.newInstance("com.zhuyang.mapping.object");
Club.Players players1 = new Club.Players();
players1.setCountry("巴西");
players1.setName("罗纳尔多");
players1.setNum("9");
players1.setPosition("中锋");
players1.setDescription("外星人");
Club.Players players2 = new Club.Players();
players2.setCountry("中国");
players2.setName("李毅");
players2.setNum("14");
players2.setDescription("带球像亨利");
players2.setPosition("中锋");
Club.Players players3 = new Club.Players();
players3.setCountry("英格兰");
players3.setName("欧文");
players3.setNum("10");
players3.setDescription("金童");
players3.setPosition("中锋");
Club.Players players4 = new Club.Players();
players4.setCountry("威尔士");
players4.setName("贝尔");
players4.setNum("3");
players4.setPosition("右后卫");
players4.setDescription("速度变态");
Club c = new Club();
List<Club.Players> players=c.getPlayers();
players.add(players1);
players.add(players2);
players.add(players3);
players.add(players4);
c.setCoach("Mario");
c.setCreatedDate(getDate());
c.players=players;
c.setName("Real Madrid");
JAXBElement<Club> element = (new ObjectFactory()).createClub(c);
Marshaller marshaller = jaxbContent.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
marshaller.setProperty("jaxb.encoding", "utf-8");
marshaller.marshal(element, System.out);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
try {
object2xml();
System.out.println(System.getProperty("user.dir"));
} catch (JAXBException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
private static XMLGregorianCalendar getDate() {
try {
return DatatypeFactory.newInstance().newXMLGregorianCalendar(
new GregorianCalendar(2011,2,20) {
});
} catch (DatatypeConfigurationException e) {
throw new Error(e);
}
}
}
分享到:
相关推荐
JAXB是Java开发中处理XML的强大工具,通过注解和API实现了XML与Java对象的自动转换。了解并熟练掌握JAXB,能够提升XML数据处理的效率和代码的可读性。在实际项目中,结合JAXB与XML Schema,可以构建更健壮、易于维护...
在本文中,我们将深入探讨如何使用JAXB实现Java对象与XML的互相转换。 首先,我们需要理解JAXB的基本工作原理。JAXB基于Java注解,这些注解用于标记Java类和它们的属性,以便JAXB知道哪些元素和属性应该映射到XML中...
在Java世界中,使用JAXB(Java Architecture for XML Binding)库可以方便地实现XML数据与Java对象之间的转换,从而在WebService中轻松处理数据交换。本篇文章将深入探讨如何使用JAXB进行XML到Object以及Object到XML...
Java Architecture for XML Binding (JAXB) 是Java平台中用于处理XML和Java对象之间转换的一个标准技术。它允许我们将XML文档转换为Java对象,反之亦然,使得数据交换变得更加简单。在Java开发中,JAXB是处理XML数据...
总之,JAXB是Java开发中处理XML的强大工具,通过它可以高效地进行XML与Java对象之间的转换,简化了数据交换过程。熟练掌握JAXB的使用,能大大提高开发效率,并让代码更加简洁、易于维护。在实际项目中,可以结合标签...
Java Architecture for XML Binding (JAXB) 是Java平台上的一个标准技术,用于在XML文档和Java对象之间进行数据绑定。它允许开发者将XML Schema定义的数据结构直接映射到Java类,从而方便地在XML和Java对象之间进行...
JAXB (Java Architecture for XML Binding) 是 Java 中用于对象到XML以及XML到对象转换的API。它使得开发者能够轻松地将Java对象模型映射到XML文档,并反之亦然。在给定的例子中,我们将深入理解如何使用JAXB注解来...
它允许开发人员通过简单的注解(annotations)将Java类与XML Schema映射,从而实现XML文档的序列化和反序列化。在Java应用程序中,JAXB使得处理XML数据变得更加便捷,无需编写大量手动转换代码。 JAXB的核心概念...
本篇文章将深入探讨XML与Java对象之间的映射机制,以及如何在实际开发中实现这种映射。 1. **Java对象到XML的转换** - **JAXB(Java Architecture for XML Binding)**:JAXB是Java标准API,用于在Java对象和XML...
理解并熟练使用JAXB,能够极大地提高开发效率并减少错误,使得Java应用与XML数据的交互变得更加简单和高效。在实际工作中,开发者可以根据项目需求和团队习惯选择是否采用JAXB,或者考虑其他替代方案,如DOM、SAX、...
2. 使用 JAXB 的 XJC 工具,通过定义 schema 的方式实现 Java 对象与 XML 的绑定。 ### 3.2 JAXB Annotation 使用说明 #### 3.2.1 @XmlType @XmlType 定义映射的一些规则,用在 class 类的注解,常与 @...
**JAXB(Java Architecture for XML Binding)** 是Java平台中用于处理XML的一种强大的工具,它提供了将XML文档与Java对象之间的映射,从而方便XML数据的解析和生成。通过JAXB,开发者可以轻松地实现XML数据到Java...
Java Architecture for XML Binding(JAXB)是Java平台上的一个标准技术,它提供了一种方便的对象与XML之间的映射机制。在Java 6中,JAXB已经成为Java Standard Edition(Java SE)的一部分,之前它是Java ...
源码部分展示了如何通过注解将XML结构与Java对象对应起来,以及如何使用JAXB API进行解析和反序列化。 **文件名:“bjeoms_exceltool”** 虽然提供的文件名“bjeoms_exceltool”与标题和描述中的JAXB解析XML主题不...
- 为XML元素创建对应的Java类,并使用JAXB的注解如@XmlRootElement、@XmlElement等来标记属性与XML元素之间的映射关系。 - 可以使用@XmlAccessorType注解来指定字段或属性的默认绑定规则。 3. **JAXB解析和序列化...
**Java Architecture for XML Binding (JAXB)** 是Java平台上的一个标准技术,用于在XML文档和Java对象之间进行数据绑定。它允许开发者将XML文档转换为Java对象,反之亦然,从而简化了XML处理。JAXB是Java SE和Java ...
通过JAXB,你可以将XML Schema定义的数据模型直接映射到Java类,反之亦然,从而方便地在XML和Java对象之间进行转换。 在**JAXB教程**中,通常会涵盖以下几个核心概念和步骤: 1. **数据绑定**: 这是JAXB的核心功能...
JAXB,全称为Java Architecture for XML Binding,是Java平台中用于在XML和Java对象之间进行映射的标准技术。它提供了一种自动的方式,使得开发者能够方便地在XML文档和Java对象之间进行数据交换,极大地简化了XML...
JAXB(Java Architecture for XML Binding) 是一个根据 XML Schema 1.0 将 Java 对象转换为 XML 的绑定框架。JAXB 提供了一些注解来控制 Java 对象和 XML 之间的转换过程。这些注解可以应用于 Java 类、字段、方法和...