`
zzzzzz5530041
  • 浏览: 32945 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

JAXB 对象与xml映射

阅读更多

导入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);
		}
	}
}
 

 

1
0
分享到:
评论

相关推荐

    [精品]JAVA6新特性介绍使用JAXB来实现对象与XML之间的映射.doc

    [精品]JAVA6新特性介绍使用JAXB来实现对象与XML之间的映射

    castor R/M映射神器

    castor是一种将java对象和XML自动绑定的开源软件。它可以在java对象、XML文本、SQL数据表以及LDAP目录之间绑定。Castor几乎是JAXB的替代品。Castor是ExoLab Group下面的一个开放源代码的项目,它主要实现的是O/R映射...

    Java与XML数据绑定

    Java Bean 与 XML 映射关系。如何只要关注业务实体,却不必关心XML的数据结构。相关的技术为J2EE JAXB。

    jaxb2.2.jar

    JAXB能够使用Jackson对JAXB注解的支持实现(jackson-module-jaxb-annotations),既方便生成XML,也方便生成JSON,这样一来可以更好的标志可以转换为JSON对象的JAVA类。JAXB允许JAVA人员将JAVA类映射为XML表示方式

    spring O/X 映射

    O/X 映射器这个概念并不新鲜,O 代表 Object,X 代表 XML。它的目的是在 Java 对象(几乎总是一个 plain old Java object,或简写为 POJO)和 XML 文档之间来回转换。 例如,您可能有一个带有几个属性的简单 bean,...

    jaxb-libs.jar.zip

    JAXB能够使用Jackson对JAXB注解的支持实现(jackson-module-jaxb-annotations),既方便生成XML,也方便生成JSON,这样一来可以更好的标志可以转换为JSON对象的JAVA类。JAXB允许JAVA人员将JAVA类映射为XML表示方式,...

    JAVA6新特性介绍

    我们把对象与关系数据库之间的映射称为ORM, 其实也可以把对象与XML之间的映射称为OXM(Object XML Mapping). 原来JAXB是JavaEE的一部分,在JDK6中,SUN将其放到了Java SE中,这也是SUN的一贯做法。JDK6中自带的这个...

    jaxb-api-2.2.jar.zip

    JAXB能够使用Jackson对JAXB注解的支持实现(jackson-module-jaxb-annotations),既方便生成XML,也方便生成JSON,这样一来可以更好的标志可以转换为JSON对象的JAVA类。JAXB允许JAVA人员将JAVA类映射为XML表示方式,...

    maven-jaxb2-plugin-0.14.0.jar

    JAXB能够使用Jackson对JAXB注解的支持实现(jackson-module-jaxb-annotations),既方便生成XML,也方便生成JSON,这样一来可以更好的标志可以转换为JSON对象的JAVA类。JAXB允许JAVA人员将JAVA类映射为XML表示方式,...

    JAXBTest.zip

    一个使用JAXB的简单例子…… Java对象生成xml, xml映射到Java对象。

    JAXB工具

    本工具是能够将bean映射为xml的一种小东西,很多公司的项目经理遇到问题都解决不了。这是一种新技术,请大家赶快下载。

    JDK1.6新特性与实战例子

    JDK6的新特性之二:使用JAXB2来实现对象与XML之间的映射 JDK6的新特性之三:理解StAX StAX(JSR 173)是JDK6.0中除了DOM和SAX之外的又一种处理XML文档的API JDK6的新特性之四:使用Compiler API 现在我们可以用JDK6 ...

    clarityclient:Java客户端,用于与Genologics的REST API配合使用

    开发人员使用Java对象,这些对象映射到Genologics的API文档所描述的XML文档上。 它使用JAXB对象到XML的绑定机制来转换发送到Genologics的REST API和从Genologics的REST API接收的XML消息。 通信使用Apache的...

    JDK 6.2.3文文档.rar

    JAXB2实现对象与XML之间的映射 StAX Compiler API 轻量级 Http Server API 插入式注解处理API(Pluggable Annotation Processing API) 用Console开发控制台程序 对脚本语言的支持(如:ruby,groovy,javascript) ...

    JAX-WS的lib、src和docs

    2.用来处理Marshal/Unmarshal的XML Binding机制,JAX-WS2.0用JAXB2来处理Java Object与XML之间的映射,Marshalling就是把Java Object映射到XML,Unmarshalling则是把XML映射到Java Object.之所以要做Java Object与XML的...

    JDK+6.0+ZH+API.chm.zip

    JDK6的新特性之二_使用JAXB2来实现对象与XML之间的映射 JDK6的新特性之三_理解StAX JDK6的新特性之四_使用Compiler API JDK6的新特性之五_轻量级HttpServer JDK6的新特性之七_用Console开发控制台程序 JDK6的...

    NAXB:.NET 属性 XML 绑定。 这是一个框架,允许您通过在属性上使用自定义属性指定 XPath 来将任何 XML 绑定到 .NET 对象

    Java 的 MOXy(一种 JAXB 实现)和 XStream 已通过向对象添加 XPath 注释将单个属性/字段绑定到 XML 值来解决这个问题,但是从来没有为 .NET 开发过这种通用和健壮的解决方案。 在 .NET 中,首选解决方案通常是 XML...

    JAVA_API1.6文档(中文)

    javax.xml.bind.annotation.adapters XmlAdapter 及其规范定义的子类允许任意 Java 类与 JAXB 一起使用。 javax.xml.bind.attachment 此包由基于 MIME 的包处理器实现,该处理器能够解释并创建基于 MIME 的包格式的...

    jaxb2-fixed-value:JAXB2 固定值插件

    该插件在从 XML 模式为用户界面生成值对象时特别有用。 用户界面标记(例如 Struts HTML 标记)使用对 bean 属性的反射来呈现自身,因此在映射到用户界面本身的 Java Bean 中设置一组合理的固定值通常很有用。 ...

    Really Easy Java XML Binding-开源

    真正简单的Java XML绑定(RE-JAXB)是一种将XML映射到普通的旧Java对象再映射回XML的方法,而无需使用Bean,无需外部绑定定义,无需手动映射值以及无需使用XSD文件。

Global site tag (gtag.js) - Google Analytics