`

JAXB sample例子

    博客分类:
  • java
阅读更多

一.JAXB是什么?
   Java Architecture for XML Binding (JAXB)是一种Java技术,通过这种技术你可以从XML 模式生成Java类。作为这一过程的一部分,JAXB技术还提供将XML实例文档反编组为Java对象的一个内容树,然后再将内容树编组成一个XML文档。JAXB提供了一种快速和方便的方式来将一个XML模式绑定到Java代码的一个表示上,使得Java开发者能够更轻松地将XML数据和Java应用中的处理函数融合在一起,而不必对XML本身有很多的了解。

JAXB技术的一个好处就是它隐藏了细节,排除了SAX和DOM中的外部联系——生成的JAXB类仅仅描述了在源模式中实际定义了的关系。其结果就是产生了具有高度可移植性的XML数据,加入了具有高度可移植性的Java代码,这些Java代码可用于创建灵活的、轻量级的应用和Web服务。

二.你必须有两个文件,一个是xml,一个是与他相对应的xsd
现成的有两个文件可以从http://java.sun.com/developer/technicalArticles/WebServices/jaxb/上找到books.xml与books.xsd
books.xml
<?xml version="1.0"?>
<Collection>
<books>
    <book itemId="999">
      <name>
         Learning JAXB
      </name>
      <ISBN>
        123445
      </ISBN>
      <price>
        34 $
      </price>
      <authors>
        <authorName> Jane Doe
        </authorName>
      </authors>
      <description>
         This books contains step by step instructions for beginners so that they can start using Java API for XML Binding.
      </description>
      <promotion>
        <Discount> 10% on this book if purchased by March 2003
        </Discount>
      </promotion>
      <publicationDate>
        2003-01-01
      </publicationDate>
      <bookCategory>other
      </bookCategory>
    </book>

    <book itemId="129">
      <name>
         Java Webservices today and Beyond
      </name>
      <ISBN>
        522965
      </ISBN>
      <price>
        29 $
      </price>
      <authors>
        <authorName> John Brown
        </authorName>
        <authorName> Peter T.
        </authorName>
      </authors>
      <description>
         This books contains information for users so that they can start using Java Web Services Developer Pack.
      </description>
      <promotion>
        <Discount> Buy one get Learning webservices Part 1 free
        </Discount>
      </promotion>
      <publicationDate>
        2002-11-01
      </publicationDate>
      <bookCategory>magazine
      </bookCategory>
    </book>
</books>
</Collection>

books.xsd
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
           xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" jaxb:version="1.0">
<xs:element name="Collection">
   <xs:complexType>
      <xs:sequence>
        <xs:element name ="books">
           <xs:complexType>
              <xs:sequence>
                <xs:element name="book" type="bookType" minOccurs="1" maxOccurs="unbounded"/>
              </xs:sequence>
           </xs:complexType>
        </xs:element>
      </xs:sequence>
   </xs:complexType>
</xs:element>

<xs:complexType name="bookType">
<xs:sequence>
    <xs:element name="name" type="xs:string"/>
    <xs:element name="ISBN" type="xs:long"/>
    <xs:element name="price" type="xs:string"/>
    <xs:element name="authors" >
      <xs:complexType>
        <xs:sequence>
           <xs:element name="authorName" type="xs:string" minOccurs="1"
                maxOccurs="unbounded"/>
        </xs:sequence>
      </xs:complexType>
    </xs:element>
    <xs:element name="description" type="xs:string" minOccurs="0"/>
    <xs:element name="promotion">
       <xs:complexType>
         <xs:choice>
           <xs:element name="Discount" type="xs:string" />
           <xs:element name="None" type="xs:string"/>
         </xs:choice>
       </xs:complexType>
    </xs:element>
    <xs:element name="publicationDate" type="xs:date"/>
    <xs:element name="bookCategory">
       <xs:simpleType>
         <xs:restriction base="xs:NCName">
           <xs:enumeration value="magazine" />
           <xs:enumeration value="novel" />
           <xs:enumeration value="fiction" />
           <xs:enumeration value="other" />
         </xs:restriction>
        </xs:simpleType>
     </xs:element>
</xs:sequence>
<xs:attribute name="itemId" type="xs:string" />
</xs:complexType>

<xs:simpleType name="bookCategoryType" >
   <xs:restriction base="xs:string">
      <xs:enumeration value="magazine" />
      <xs:enumeration value="novel" />
      <xs:enumeration value="fiction" />
      <xs:enumeration value="other" />
   </xs:restriction>
</xs:simpleType>
</xs:schema>
          

三.安装jwsdp-2.0
下载地址:http://java.sun.com/webservices/downloads/webservicespack.html别忘了设置环境变量
   下面是有关jwsdp的详细情况
   JWSDP提供了库和工具的集合,包含了开发和测试WEB服务的必需组件。除了标准的接口库外,还提供了每个库的引用实现。
   JWSDP组件介绍:

1,JAXP:
   XML处理的Java API(Java API for XML Processing,JAXP)提供了解析和转换 XML文档的标准化接口。

2,JAXM:
   JAXM提供SOAP1.1带附件的SOAP标准接口,以便Java程序员能够方便地发送和接 收SOAP消息。JAXM给厂商提供了一种机制,既   可以用于支持可靠的消息传输,也可以用于部分填充特定基于SOAP协议(如 ebXML)的SOAP消息。

3,JAX-RPC
   基于XML远程过程调用的Java API(Java API for XML-based Remote ProcedureCalls,JAX-RPC)提供了一种机制,使得可以通   过基于SOAP的消息跨网络调用对象。对于JAX-RPC,事实上可以使用任何支持SOAP的语言在跨网络(包括Internet)的机器上托管     Java对象的实现。JAX-RPC的作用与RMI大致相同,因为创建的插件(Stub)对象可以用于调用远程对象。从概念上讲,可以同样        地使用这两个系统。JAX-RPC和RMI的不同之处在于两台机器之间所传递的数据格式。RMI使用底层的Java特有的协议(或CORBA
        IIOP),而JAX-RPC使用的则是XML。

4,JAXR:
   JAXR(XML注册中心的Java API,Java API for XML Registries)提供了查询注册中心的抽象接口;JAXR可用来让用户不必了解   UDDI或ebXML RegRep的细节。

5,JSSE:
   JSSE提供了一种机制,可用于在加密的网络连接上进行通信,并且管理与加密有关的密匙。JSSE提供了免版税的SSL v3(安全        套接字层,Secure Sockets Layer)的实现和TLS(传输层安全,Transport Layer Security)1.0的支持。JSSE还提供了附加的        URL处理器,以便java.net.URL类能够理解和处理HTTPURL.

6,JSTL:
   JSP的标准标签库

7,ANT和TOMCAT
   ANT是一个开放工源代码构建工具,ANT起源于创建WAR(Web应用归档)的内置任务,WAR是Java Web服务的默认封装。Tomcat 是       JSP和Servlet标准的引用实现。它同样允许开发基于servlet的web服务托管,例如那些JAXM支持。

    8,JWSDP也包括WSDP(WEB服务开发人员包,Web Services Developer
   Package)Registry服务器。这是一个简单的UDDI服务器,可用于开发和测试
源文来源:http://www.iteye.com/topic/419455

四.生成代码绑定schema
    D:\EclipseWorkSpace\cxfdemo\src>xjc.bat -p com.ce.open.sample books.xsd -d src
parsing a schema...
compiling a schema...
com\ce\open\sample\BookCategoryType.java
com\ce\open\sample\BookType.java
com\ce\open\sample\Collection.java
com\ce\open\sample\ObjectFactory.java

其中 -p为生成代码的包名 后面为xml文件名 -d 为生成代码的存放位置

五.测试
public class Jaxbdemo {
public static void main(String[] args) {
   try {
    //books.xsd生成的包名
    JAXBContext jc = JAXBContext.newInstance("com.ce.open.sample");
    Unmarshaller unmarshaller = jc.createUnmarshaller();
    //注意这里的Collection是上面生成的不是java.util.Collection
    Collection collection = (Collection) unmarshaller.unmarshal(new File("src/books.xml"));
    Books books = (Books) collection.getBooks();
    List<BookType> bookList = books.getBook();
    for(BookType type : bookList){
     System.out.println(type.getName());
    }
   } catch (JAXBException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   }
}
}

六.相关资源链接
http://java.sun.com/developer/technicalArticles/WebServices/jaxb/

http://gceclub.sun.com.cn/staticcontent/html/webservices/web_services_tutorial/index.htm

http://java.sun.com/webservices/docs/1.5/tutorial/doc/JAXBUsing.html

http://www.xyzws.com/scdjws/studyguide/jaxb_samples2.0.html

http://java.sun.com/webservices/downloads/webservicespack.html (Java Web Services Developer Pack (Java WSDP) )

分享到:
评论

相关推荐

    jaxb生成XML例子

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

    JAXB的例子

    在"Test"这个例子中,我们可以假设有一个XML文档,描述了某个图书信息,例如: ```xml &lt;title&gt;Java编程思想 布鲁斯·艾克尔 机械工业出版社 ``` 对应地,我们有以下的Java类: ```java @XmlRootElement(name...

    Jaxb简单例子

    这个简单的例子将带你深入理解JAXB的基本用法,包括注解的使用和Java与XML之间的互相转换。 **一、JAXB的基本概念** 1. **Java对象到XML**: JAXB允许我们将Java对象直接序列化为XML格式的文档,这称为对象到XML的...

    一个基于java jaxb的序列化例子,非常简单易懂

    在给定的例子"JAXBDemo"中,我们可以预期它包含了一个简单的JAXB使用示例,帮助我们理解这一过程。 首先,让我们了解一下JAXB的工作原理。JAXB的核心思想是通过元数据(如注解或XML Schema)将Java类与XML结构关联...

    jaxb解析xml为对象例子

    **标题:“JAXB解析XML为对象例子”** 在Java开发中,XML作为一种常见的数据交换格式,经常被用于存储和传输数据。Java Architecture for XML Binding(JAXB)是Java平台的标准API,它允许开发者将Java对象绑定到...

    JAXB的 eclipse插件

    JAXB(Java Architecture for XML Binding)是Java平台上的一个标准,它提供了一种在Java对象和XML文档之间进行映射的机制。Eclipse作为一款强大的Java集成开发环境,为开发者提供了丰富的插件支持,其中包括JAXB的...

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

    JAXB2,全称为Java Architecture for XML Binding 2,是Java平台上的一个标准技术,用于在XML和Java对象之间进行绑定。它允许开发者通过简单的API将XML文档转换为Java对象,反之亦然,大大简化了XML数据处理。JAXB2...

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

    标题中的"jaxb-impl-2.3.0、jaxb-core-2.3.0、jaxb-api-2.3.0"是JAXB的不同组件版本号,它们在处理XML到Java对象之间的转换时起到关键作用。在描述中提到的“Maven项目中缺少jaxb-api的异常报错”,通常指的是在运行...

    JAXB的安装包及插件

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

    jaxb-api jaxb-impl jar

    `jaxb-api`和`jaxb-impl`是JAXB框架的核心组成部分。这两个JAR文件在处理XML到Java对象的绑定过程中扮演着关键角色。 1. **jaxb-api.jar**: 这个库包含了JAXB API,即Java接口和抽象类,定义了JAXB的工作方式。它...

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

    `jaxb-api-2.1.jar` 和 `jaxb-impl-2.1.8.jar` 是Java应用程序中用于XML绑定(Java Architecture for XML Binding,简称JAXB)的重要库文件。JAXB是Java SE和Java EE平台的标准部分,它提供了一种将XML文档与Java...

    jaxb-ri-2.2.7

    4. **示例和教程**:可能包含演示如何使用JAXB的示例代码(如`samples`目录),这些例子可以帮助初学者快速上手。 5. **构建脚本和配置文件**:如`build.xml`(Ant)或`pom.xml`(Maven)文件,用于构建和测试JAXB ...

    jaxb2.3.0依赖jar.rar

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

    JAXB的使用JAXB的使用

    **JAXB(Java Architecture for XML Binding)**是Java平台中用于XML到Java对象绑定的一种标准技术,它使得Java开发者能够方便地在XML文档和Java对象之间进行数据转换。JAXB提供了一种自动化的方式,将XML Schema...

    使用jaxb读取配置文件,并使用POI修改excel内容的例子

    在这个例子中,我们关注的是如何使用Java技术栈中的两个关键库:JAXB(Java Architecture for XML Binding)和Apache POI,来实现特定的功能。JAXB用于从XML文件中读取数据,而Apache POI则用于处理Excel文档,特别...

    idea 中用jaxb 读xml中数据

    当我们需要处理XML文件,比如从XML中提取数据时,JAXB(Java Architecture for XML Binding)是一个强大的工具。本教程将详细解释如何在Idea中利用JAXB来读取XML文件中的数据。 JAXB是Java标准API,它提供了将Java...

    JAXB乱码问题解决

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

    activation.jar jaxb1-impl.jar jaxb-api.jar jaxb-impl.jar jaxb-xjc.jar jsr173_1.0

    这些文件是Java编程环境中常用的库文件,主要用于XML绑定(Java Architecture for XML Binding,JAXB)和JavaBeans Activation Framework(JAF)。在Java应用程序开发中,尤其是处理XML数据时,这些库扮演着至关重要...

    jaxb-api.jar.jaxws-api.zip_ jaxb-api.jar_cxf_jax-ws.jar_jaxb-api

    标题提到的"jaxb-api.jar.jaxws-api.zip_ jaxb-api.jar_cxf_jax-ws.jar_jaxb-api",是针对这个问题提供的一组支持包。 **JAXB(Java Architecture for XML Binding)** 是Java平台的一个标准,它允许开发者将XML文...

Global site tag (gtag.js) - Google Analytics