http://zh.wikipedia.org/wiki/JAXB 写道
JAXB(Java Architecture for XML Binding简称JAXB)允许Java开发人员将Java类映射为XML表示方式。JAXB提供两种主要特性:将一个Java对象序列化为XML,以及反向操作,将XML解析成Java对象。换句话说,JAXB允许以XML格式存储和读取数据,而不需要程序的类结构实现特定的读取XML和保存XML的代码。
当规格复杂且经常变化时JAXB特别有用。在这种情况下,经常修改XML模式定义以与Java定义保持一致很花费时间并且容易产生错误。
JAXB是Java EE平台的API之一,同时是Java Web服务开发包 (JWSDP)的一部分。 JAXB也是Web服务互操作性技术(WSIT)的基础之一. JAXB是J2SE1.6的一部分。
JAXB 1.0是在Java社群过程中作为JSR 31开发出来的。JAXB 2.0是作为JSR 222开发的。这两个版本的参考实现可以从java.net下载。
当规格复杂且经常变化时JAXB特别有用。在这种情况下,经常修改XML模式定义以与Java定义保持一致很花费时间并且容易产生错误。
JAXB是Java EE平台的API之一,同时是Java Web服务开发包 (JWSDP)的一部分。 JAXB也是Web服务互操作性技术(WSIT)的基础之一. JAXB是J2SE1.6的一部分。
JAXB 1.0是在Java社群过程中作为JSR 31开发出来的。JAXB 2.0是作为JSR 222开发的。这两个版本的参考实现可以从java.net下载。
在CXF(2.7.0)里面的定义和实现包是以下两个:
在使用上个人感觉和xstream等工具是很类似的 毕竟实现对于使用者来说是透明的.
以下是一个简单的例子代码 因为是第一次写难免写错不要介意:
package org.cc.jaxb; import java.io.ByteArrayOutputStream; import java.io.StringReader; import java.util.ArrayList; import java.util.Date; import java.util.List; import javax.xml.bind.JAXBContext; import javax.xml.bind.JAXBException; import javax.xml.bind.Marshaller; import javax.xml.bind.Unmarshaller; public class Client { public static void main(String[] args) throws JAXBException { ObjectFactory factory=new ObjectFactory(); Person person=factory.createPerson(); Address address=new Address(); address.setCountry("中国"); address.setStreet("西湖区"); address.setHouse("xxx街道xx号"); person.setAge(22); person.setBirthDate(new Date()); person.setName("cc"); person.setSex(true); person.setTempId(1); person.setAddress(address); List<String> favors=new ArrayList<String>(); favors.add("吃饭"); favors.add("睡觉"); person.setFavors(favors); JAXBContext jaxbContext=JAXBContext.newInstance("org.cc.jaxb"); Marshaller marshaller=jaxbContext.createMarshaller(); ByteArrayOutputStream baos = new ByteArrayOutputStream(); marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true); marshaller.setProperty(Marshaller.JAXB_ENCODING, "gbk"); marshaller.marshal(person, baos); StringBuffer sb = new StringBuffer(new String(baos.toByteArray())); System.out.println(sb.toString()); Unmarshaller unmarshaller=jaxbContext.createUnmarshaller(); StringReader reader = new StringReader(sb.toString()); Person per = (Person)unmarshaller.unmarshal(reader); System.out.println(per.getFavors()); } }
package org.cc.jaxb; import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlRootElement; @XmlRootElement @XmlAccessorType(XmlAccessType.PROPERTY) public class Address { private String country; private String street; private String house; public String getCountry() { return country; } public void setCountry(String country) { this.country = country; } public String getStreet() { return street; } public void setStreet(String street) { this.street = street; } public String getHouse() { return house; } public void setHouse(String house) { this.house = house; } }
package org.cc.jaxb; import java.util.Date; import java.util.List; import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlAttribute; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlElementWrapper; import javax.xml.bind.annotation.XmlRootElement; import javax.xml.bind.annotation.XmlTransient; @XmlRootElement(name="Person") // 根名叫做Person @XmlAccessorType(XmlAccessType.FIELD) //非static类型和标明transient的会被处理 public class Person { @XmlAttribute //作为属性 public String name; @XmlAttribute //作为属性 private int age; @XmlAttribute //作为属性 private boolean sex; @XmlElement //作为一个元素 private Date birthDate; @XmlTransient // 标明不处理这个 private long tempId; private Address address; //另一个类型的对象 @XmlElementWrapper(name="list") //favors外包一层list private List<String> favors; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public boolean isSex() { return sex; } public void setSex(boolean sex) { this.sex = sex; } public Date getBirthDate() { return birthDate; } public void setBirthDate(Date birthDate) { this.birthDate = birthDate; } public long getTempId() { return tempId; } public void setTempId(long tempId) { this.tempId = tempId; } public Address getAddress() { return address; } public void setAddress(Address address) { this.address = address; } public List<String> getFavors() { return favors; } public void setFavors(List<String> favors) { this.favors = favors; } }
package org.cc.jaxb; import javax.xml.bind.JAXBElement; import javax.xml.bind.annotation.XmlElementDecl; import javax.xml.bind.annotation.XmlRegistry; import javax.xml.namespace.QName; @XmlRegistry public class ObjectFactory { private final static QName _Person_QName =new QName("http://fair-jm.iteye.com","Person"); private final static QName _Adress_QName =new QName("http://fair-jm.iteye.com","Address"); public Person createPerson(){ return new Person(); } public Address createAddress(){ return new Address(); } @XmlElementDecl(namespace="http://fair-jm.iteye.com",name="Person") public JAXBElement<Person> createPerson(Person value){ return new JAXBElement<Person>(_Person_QName, Person.class, value); } @XmlElementDecl(namespace="http://fair-jm.iteye.com",name="Address") public JAXBElement<Address> createAddress(Address value){ return new JAXBElement<Address>(_Adress_QName,Address.class,value); } }
输出结果:
<?xml version="1.0" encoding="gbk" standalone="yes"?> <Person name="cc" age="22" sex="true" xmlns:ns2="http://fair-jm.iteye.com"> <birthDate>2013-05-12T14:21:48.486+08:00</birthDate> <address> <country>中国</country> <house>xxx街道xx号</house> <street>西湖区</street> </address> <list> <favors>吃饭</favors> <favors>睡觉</favors> </list> </Person> [吃饭, 睡觉]
相关推荐
在Java世界中,使用JAXB(Java Architecture for XML Binding)库可以方便地实现XML数据与Java对象之间的转换,从而在WebService中轻松处理数据交换。本篇文章将深入探讨如何使用JAXB进行XML到Object以及Object到XML...
接着,使用`apt`命令编译Java源文件,这会产生JAXB相关的文件。然后,通过`wsimport`工具根据WSDL(Web Service Description Language)生成客户端的代理类。最后,编写客户端程序,通过代理类调用服务端的方法。...
本示例程序将向你展示如何在JDK21环境下集成CXF,以创建和运行一个简单的Web服务。 首先,我们需要了解JDK21。这是Java Development Kit的第21个版本,可能包含了一些新的特性和改进。然而,需要注意的是,截至本文...
通过以上步骤,我们可以成功地使用JAX-WS开发并部署一个简单的WebService,以及创建客户端来访问该服务。这种技术在企业级应用开发中非常常见,尤其是在需要实现不同系统之间的远程通信和数据交换的场景下。
通过这样的方式,JAXB使得我们在Java中调用Web服务变得简单且直观,无需手动处理XML解析和序列化的复杂过程。在实际应用中,JAXB结合其他Java Web服务框架,如JAX-WS,可以构建强大的客户端和服务端应用。
XFire不仅支持简单的API,使POJO(Plain Old Java Object)和schema开发变得更加便捷,还兼容多种Web服务标准,如JBI(Java Business Integration)、JAXB(Java Architecture for XML Binding)和XMLBeans。...
JAX-WS(Java API for XML Web Services)是Java中用于开发WebService的标准接口,其底层支持为JAXB(Java Architecture for XML Binding)。JAX-WS是JAX-RPC(Java API for XML Remote Procedure Call)的进化版本...
maven 下载jaxws-rt 2.1.4 jar 失败了 其中包含包 ...com.sun.xml.bind jaxb-impl 2.1.7 ...javax.xml.ws jaxws-api 2.1 org.jvnet.staxex stax-ex 1.2 ...做java webservice时缺少这些包 好不容易下载下来 备份csdn
4. **WebService开发工具**:如使用Apache CXF、Gson、JAXB等工具进行WebService的开发和调试。 5. **安全性考虑**:介绍如何在WebService中实现安全机制,如HTTPS加密、WS-Security(SOAP消息的安全标准)等。 6....
开发者可以通过定义Java接口或类,然后使用JAX-WS的工具(如wsimport或JAXB)生成服务端代码,将业务逻辑暴露为Web服务。 3. **客户端**:客户端是调用服务端Web服务的程序,可以本地调用或远程调用。本地调用通常...
NULL 博文链接:https://endeavor416.iteye.com/blog/270507
1. **POJO绑定**:支持将Web服务直接绑定到POJO,同时也支持XMLBeans、JAXB1.1、JAXB2.0和Castor等数据绑定技术。 2. **多协议支持**:除了基本的HTTP协议,XFire还支持JMS和XMPP等通信协议,提供了多种访问Web服务...
在使用webservice,esb等需要jaxb的项目里经常会出现 JAXB 2.0 API is being loaded from the bootstrap classloader错误.执行System.out.println(System.getProperty("java.endorsed.dirs"));输出jaxb-api-2.1.jar...
WebService的核心优势在于它的开放性和互操作性,这意味着无论客户端和服务器端使用何种技术栈,都可以通过标准的协议进行无缝通信。 - **特点**: - **基于HTTP协议**:WebService通常基于HTTP协议进行通信,这是...
3. **WSDL**: Web服务描述语言(WSDL)是定义Web服务接口的标准,它描述了服务如何被调用、使用什么协议以及在哪里找到服务。在JWS中,通过JAX-WS工具可以自动生成WSDL文件,这使得其他系统能更容易地发现和理解Web...
做开发时,查了大量资料,发现一比较全面的资料,分享一下! WebService CXF学习——入门篇 1.CXF由来 2.HelloWorld 3.WSDL描述 WebService CXF学习——进阶篇 ...WebService CXF学习——JAXB剖析
首先,定义一个Java接口,然后使用注解(如@WebService)来标识服务类,并通过工具如wsimport或JAXB来生成客户端所需的Stubs和Skeletons。 6. 运行和部署: 一旦服务端代码编写完成,需要将其部署到支持WebService...
Web服务(Web Service)是一种基于互联网的、使用标准XML(Extensible Markup Language)进行通信的软件系统,允许不同平台的应用程序之间交换数据。在Java世界中,开发Web服务的一个常见方式是使用Java API for XML...
JAX-WS(Java API for XML Web Services)是Java平台上用于构建Web服务的标准,它取代了早期的JAX-RPC,提供了一种更简单、更面向对象的方式来创建和消费Web服务。在使用JAX-WS开发Java Web服务时,我们需要依赖一些...