数据绑定之JAXB

JAXB(Java Architecture for XML Binding)提供了一个快速而方便的方式 绑定XML Schemas和java,使java程序员能够很方便的在java应用程序中处理XML 数据。JAXB提供了将XML文档解组为java内容树的方法,以及将java内容树重新 编组回XML文档的方法。JAXB同样也提供了一种从java对象生成XML Schema的方 式。

这里有几个重要的定义:

编组(Marshalling)是把内存中的数据转化到存储媒介上的过程。因此在 Java 和 XML 环境中,编组就是把一些 Java 对象转化成一个(或多个) XML 文档。在数据库环境中,则是把 Java 表示的数据存入数据库。显然,编组的秘 密在于把 Java 实例中的面向对象结构转化成适用于 XML 的 扁平结构,或者 RDBMS 中的关系结构(使用 Java 技术转换到 OODBMS 实际上很简单)。

解组(Unmarshalling) 是把数据从存储媒介转换到内存中的过程--正好与 编组相反。因此需要把 XML 文档解组到 Java VM 中。这里的复杂性不是在扁平 数据中,因为这不是必需的,而在于从正确的数据到正确的 Java 代码变量的映 射。如果映射是错误的,就不可能正确地访问数据。当然,如果再尝试重新编组 还会造成更大的问题,并且问题传播得很快。

往返(Round-tripping)可能是最重要也最容易误解的数据绑定术语。往返 用于描述从存储媒介到内存然后回到存储媒介的完整循 环。在 XML 和 Java 技 术环境中,这就意味着从 XML 文档到 Java 实例变量,然后再回到 XML 文档。 正确的往返要求,如果中间没有修改数据,XML 输入和 XML 输出应该是等同的 。

生成Java文件:

1.可以通过JAXB的bin中的xjc执行生成操作,命令如下:

xjc –p com.chris.jaxb test.xsd –d gen-src

-p <pkg>:指定生成java文件的package

-d <dir>:指定生成java文件的目录

其中-d所指定的目录必须是已经存在的,否则会报:“cowardly refuses to write to a non-existent directory "gen- src"”。

2.使用ant生成

在ant文件中定义一个xjc的task,通过执行该task生成java文件,ant文件的 定义:

<property name="jaxb.home" value="./lib" />
  <path id="classpath">
  <pathelement path="src" />
  <fileset dir="${jaxb.home}" includes="*.jar" />
</path>
<taskdef name="xjc" classname="com.sun.tools.xjc.XJCTask">
  <classpath refid="classpath" />
</taskdef>
<target name="generate" description="generate Java source files">
  <echo message="generate java from schema..." />
  <mkdir dir="gen-src" />
  <xjc schema="test.xsd" package="com.chris.jaxb" destdir="gen-src">
    <produces dir="gen-src/com.chris.jaxb " includes="**/*.java" />
  </xjc>
</target>

时间: 2024-10-27 01:38:30

数据绑定之JAXB的相关文章

使用JAXB框架定制Web服务行为

Web 服务 Web 服务概述 从本质上来讲 Web 服务就是对外暴露的并能够通过 Web 进行调用的一组 API,它并不要求服务提供方及调用方的技术实现.编程语言.运行平台甚至操作系统等.也正因为这个特点 Web 服务能在企业应用集成领域迅速占领一席之地,并成为实施应用程序集成的首选手段之一,同时 Web 服务也是面向服务架构的重要实现手段. 深入剖析 Web 服务我们不难发现在这个简单定义的背后有若干问题需要解决:Web 服务提供程序如何描述自己才能为调用程序所理解:调用程序如何发现可用的

Java中的XML: 数据绑定,第 1 部分:代码生成方法 — JAXB 及其它

数据绑定 提供了一种简单而直接的方法,以在 Java 平台应用程序中使用 XML.有了数据绑定,应用程序可以在很大程度上忽略 XML 文档的实际结构,而 直接使用那些文档的数据内容.虽然这种方法不能适合于所有应用程序,但在一 般情况下,对于那些将 XML 用于数据交换的应用程序是比较理想的. 除了简化编程之外,数据绑定还提供了其它一些好处.由于数据绑定对许多文 档细节进行了抽象,因此对于在内存中处理文档,它通常所需要的内存比文档模 型方法(譬如 DOM 或 JDOM)要少.您还会发现,由于不需要

XML 和 Java 技术: 数据绑定的多种用法

xml|数据 除将 XML 用作一种简单数据格式之外,数据绑定是 XML 最流行的用法之一.即使刚刚入门的程序员也能在一种原生编程语言中使用 XML,并且在大多数情况下完全不需要任何的 XML 专门知识.本文并不是介绍解决方案,取而代之,Brett 介绍了一些讨论主题,鼓励您思考如何使用 XML 和数据绑定.欢迎在 XML 和 Java 技术讨论论坛上与别人一起分享您的想法. XML 用于业务而非技术 随着 XML 的日趋盛行,人们也越来越注重可用性.换句话说,程序员和管理者并不希望把 XML

实现Castor数据绑定,第1部分:安装和设置Castor

本文配套源码 数据绑定风靡一时 在XML新闻组.邮件列表和网站的讨论论坛中(在 参考资料 中可以找到这些内容的链接),最常见的一个主题就是数据绑定.Java和XML开发人员正在寻求一种在 Java 对象与XML文档之间来回转换的简单方法. Sun 借助其 JAXB,即 Java Architecture for XML Binding(如果您在其他地方看到缩写词 JAXB,那也是正常的:Sun 似乎每年都会更改 JAXB 所代表的含义), 在数据绑定领域占据了主导地位.然而,JAXB API(如

通过Web服务API和JAXB编组与WebSphere Process Server交互

简介 除了传统的 Enterprise JavaBeans (EJB) 接口之外,最近增加了 Java Messaging Service (JMS) API.REST 接口和 Web 服务 API.comparison of the programming interfaces for interacting with business processes and human tasks 讨论了这些 API 的优点和缺点. Web 服务 API 是在 WebSphere Process Ser

实例解析Java的Jackson库中的数据绑定_java

数据绑定API用于JSON转换和使用属性访问或使用注解POJO(普通Java对象).以下是它的两个类型. 简单数据绑定 - 转换JSON,从Java Maps, Lists, Strings, Numbers, Booleans 和 null 对象. 完整数据绑定 - 转换JSON到任何JAVA类型.我们将在下一章分别绑定. ObjectMapper读/写JSON两种类型的数据绑定.数据绑定是最方便的方式是类似XML的JAXB解析器. 简单的数据绑定简单的数据绑定是指JSON映射到Java核心数

JAXB Sample

1. Schema文件: <?xml version="1.0" encoding="UTF-8"?> <schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://www.liulutu.com/students/" targetNamespace="http://www.liulutu.com/students/"

【UWP通用应用开发】集合控件与数据绑定

为ListView和GridView添加数据 ListView采用垂直堆叠得方式显示数据,而GridView则采用水平堆叠得方式. 长相的话嘛,它们都差不多. <Grid Name="grid1" Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"> <ListView x:Name="listView1" SelectionChanged="

Java 中的 XML:使用 Castor 进行数据绑定

xml|数据 对于主要关心文档的数据内容的应用程序来说,Java 的 XML 数据绑定是 XML 文档模型的强大替代方案.在本文中,企业 Java 专家 Dennis Sosnoski 介绍了数据绑定并讨论了什么使它如此吸引人.然后他向读者展示了如何使用 Java 数据绑定的开放源代码 Castor 框架处理日益复杂的文档.如果您的应用程序关心 XML 的数据更甚于关心 XML 文档本身,您可能希望找出这个处理 Java 中 XML 的容易而又高效的方法.大多数处理应用程序中 XML 文档的方法