看到很多中文的技术文章介绍jaxb,但是遇到问题却都没有什么帮助.很多都是转载,举例,例子还很浅,不全面.然后呢,有问题又不知道英文怎么搜索.现在把我遇到问题总结一下,希望对其他人有帮助.
先上例子:
这是公司项目中的程序,未经许可,不得使用.
@XmlRootElement(name ="ResourceDescription")
@Entity
@Table(name = "resource_description")
public class ResourceDescription{
private long id;
private String resourceId;
private String name;
private String model;
private Date descriptionExpirationTime;
private String locationName;
private String resourceType;
private String temporalAvailability;
private Date resourceExpirationTime;
private double geoLongitude;
private double geoLatitude;
private double geoAltitude;
private Date lastUpdatedTime;
private Date createdTime;
private Set<OutputDescription> outputDescriptions;
private Set<InputCommandDescription> inputCommandDescriptions;
@XmlElement(name = "resourceType")
@Column(name = "resource_type")
public String getResourceType() {
return resourceType;
}
public void setResourceType(String resourceType) {
this.resourceType = resourceType;
}
@XmlElement(name = "temporalAvailability")
@Column(name = "temporal_availability")
public String getTemporalAvailability() {
return temporalAvailability;
}
public void setTemporalAvailability(String temporalAvailability) {
this.temporalAvailability = temporalAvailability;
}
public ResourceDescription() {
super();
}
public ResourceDescription(String resourceId) {
super();
this.resourceId = resourceId;
}
@XmlTransient
@Id
@GeneratedValue(generator="identity")
@GenericGenerator(name="identity", strategy = "identity")
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
@XmlElement(name = "resourceId")
@Column(name = "resourceId",unique = true)
public String getResourceId() {
return resourceId;
}
public void setResourceId(String resourceId) {
this.resourceId = resourceId;
}
@XmlElement(name = "name")
@Column(name = "name")
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@XmlElement(name = "model")
@Column(name = "model")
public String getModel() {
return model;
}
public void setModel(String model) {
this.model = model;
}
@XmlElement(name = "descriptionExpirationTime")
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "description_expiration_time")
public Date getDescriptionExpirationTime() {
return descriptionExpirationTime;
}
public void setDescriptionExpirationTime(Date descriptionExpirationTime) {
this.descriptionExpirationTime = descriptionExpirationTime;
}
@XmlElement(name = "resourceExpirationTime")
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "resource_expiration_time")
public Date getResourceExpirationTime() {
return resourceExpirationTime;
}
public void setResourceExpirationTime(Date resourceExpirationTime) {
this.resourceExpirationTime = resourceExpirationTime;
}
@XmlElement(name = "geoLongitude")
@Column(name = "geo_longitude")
public double getGeoLongitude() {
return geoLongitude;
}
public void setGeoLongitude(double geoLongitude) {
this.geoLongitude = geoLongitude;
}
@XmlElement(name = "geoLatitude")
@Column(name = "geo_latitude")
public double getGeoLatitude() {
return geoLatitude;
}
public void setGeoLatitude(double geoLatitude) {
this.geoLatitude = geoLatitude;
}
@XmlElement(name = "geoAltitude")
@Column(name = "geo_altitude")
public double getGeoAltitude() {
return geoAltitude;
}
public void setGeoAltitude(double geoAltitude) {
this.geoAltitude = geoAltitude;
}
@XmlElement(name = "locationName")
@Column(name = "location_name")
public String getLocationName() {
return locationName;
}
public void setLocationName(String locationName) {
this.locationName = locationName;
}
@XmlElement(name = "createdTime")
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "created_time")
public Date getCreatedTime() {
return createdTime;
}
public void setCreatedTime(Date createdTime) {
this.createdTime = createdTime;
}
@XmlElement(name = "lastUpdatedTime")
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "last_updated_time")
public Date getLastUpdatedTime() {
return lastUpdatedTime;
}
public void setLastUpdatedTime(Date lastUpdatedTime) {
this.lastUpdatedTime = lastUpdatedTime;
}
@XmlElementWrapper(name="outputDescriptions")
@XmlElement(name = "outputDescription")
@OneToMany(cascade={CascadeType.ALL}, targetEntity=com.ericsson.m2m.resourcedirectory.persistence.entity.OutputDescription.class,mappedBy="resourceDescription")
public Set<OutputDescription> getOutputDescriptions() {
return this.outputDescriptions;
}
public void setOutputDescriptions(Set<OutputDescription> outputDescriptions) {
this.outputDescriptions = outputDescriptions;
}
@XmlElementWrapper(name="inputCommandDescriptions")
@XmlElement(name = "inputCommandDescription")
@OneToMany(cascade={CascadeType.ALL}, targetEntity=com.ericsson.m2m.resourcedirectory.persistence.entity.InputCommandDescription.class,mappedBy="resourceDescription")
public Set<InputCommandDescription> getInputCommandDescriptions() {
return this.inputCommandDescriptions;
}
public void setInputCommandDescriptions(Set<InputCommandDescription> inputCommandDescriptions) {
this.inputCommandDescriptions = inputCommandDescriptions;
}
}
@XmlRootElement(name ="inputCommandDescription")
@XmlType(propOrder = { "name", "parameterType", "preCondition", "postCondition" })
@Entity
@Table(name = "input_command_description")
public class InputCommandDescription {
private long id;
private String name;
private String parameterType;
private String preCondition;
private String postCondition;
private ResourceDescription resourceDescription;
public InputCommandDescription() {
super();
}
@XmlTransient
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
@XmlElement(name = "name")
@Column(name = "name")
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@XmlElement(name = "parameterType")
@Column(name = "parameter_type")
public String getParameterType() {
return parameterType;
}
public void setParameterType(String parameterType) {
this.parameterType = parameterType;
}
@XmlElement(name = "preCondition")
@Column(name = "pre_condition")
public String getPreCondition() {
return preCondition;
}
public void setPreCondition(String preCondition) {
this.preCondition = preCondition;
}
@XmlElement(name = "postCondition")
@Column(name = "post_condition")
public String getPostCondition() {
return postCondition;
}
public void setPostCondition(String postCondition) {
this.postCondition = postCondition;
}
@XmlTransient
@ManyToOne(targetEntity=com.ericsson.m2m.resourcedirectory.persistence.entity.ResourceDescription.class,cascade={CascadeType.ALL})
@JoinColumn(name="resource_description_id")
public ResourceDescription getResourceDescription() {
return resourceDescription;
}
public void setResourceDescription(ResourceDescription resourceDescription) {
this.resourceDescription = resourceDescription;
}
这个程序是hibernate和jaxb混在一起的classes定义.查出来的东东直接转xml或json输出.
下面解释一下annotation.
@XmlRootElement(name ="inputCommandDescription") 不说了
@XmlTransient 不想输出的,用它标注一下.注意,防止循环引用,onetomany一定要用,否则·····
@XmlElementWrapper(name="inputCommandDescriptions") 在list或set外面包一层,好看。
@XmlType(propOrder = { "name", "parameterType", "preCondition", "postCondition" })定义输出顺序
<ResourceDescriptions><ResourceDescription><createdTime>2011-11-11T22:22:22+08:00</createdTime><descriptionExpirationTime>2011-01-13T13:13:13+08:00</descriptionExpirationTime><geoAltitude>231.0</geoAltitude><geoLatitude>12.0</geoLatitude><geoLongitude>34.0</geoLongitude><inputCommandDescriptions><inputCommandDescription><name>3</name><parameterType>3</parameterType><postCondition>3</postCondition><preCondition>3</preCondition></inputCommandDescription><inputCommandDescription><name>1</name><parameterType>1</parameterType><postCondition>1</postCondition><preCondition>1</preCondition></inputCommandDescription><inputCommandDescription><name>4</name><parameterType>4</parameterType><postCondition>4</postCondition><preCondition>4</preCondition></inputCommandDescription></inputCommandDescriptions><lastUpdatedTime>2011-04-04T23:23:23+08:00</lastUpdatedTime><locationName>1</locationName><model>1</model><name>1</name><outputDescriptions><outputDescription><featureName>3</featureName><preCondition>3</preCondition><propertyName>3</propertyName><propertyUnit>3</propertyUnit></outputDescription><outputDescription><featureName>2</featureName><preCondition>2</preCondition><propertyName>2</propertyName><propertyUnit>2</propertyUnit></outputDescription><outputDescription><featureName>1</featureName><preCondition>1</preCondition><propertyName>1</propertyName><propertyUnit>1</propertyUnit></outputDescription></outputDescriptions><resourceExpirationTime>2012-12-12T12:12:12+08:00</resourceExpirationTime><resourceId>1</resourceId><resourceType>1</resourceType><temporalAvailability>1</temporalAvailability></ResourceDescription></ResourceDescriptions>
分享到:
相关推荐
5. **图形化界面设计**:一些高级插件甚至提供了图形化的XML Schema设计工具,帮助开发者直观地构建和修改XML Schema。 6. **调试支持**:在开发过程中,插件可以提供XML和Java对象之间的调试工具,帮助定位和解决...
对于IntelliJ IDEA,虽然内置了一些基本的JAXB支持,但也可以安装如"Java2WSDL"这样的插件来增强功能。 **JAXB的基本用法** - **生成Java类**:JAXB提供了一个工具`xjc`,可以将XML Schema文档转换为对应的Java类...
JAXB2,全称为Java Architecture for XML Binding 2,是Java平台上的一个标准技术,用于在XML和Java对象之间进行绑定。它允许开发者通过简单的API将XML文档转换为Java对象,反之亦然,大大简化了XML数据处理。JAXB2...
标题中的"jaxb-impl-2.3.0、jaxb-core-2.3.0、jaxb-api-2.3.0"是JAXB的不同组件版本号,它们在处理XML到Java对象之间的转换时起到关键作用。在描述中提到的“Maven项目中缺少jaxb-api的异常报错”,通常指的是在运行...
`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` 是Java应用程序中用于XML绑定(Java Architecture for XML Binding,简称JAXB)的重要库文件。JAXB是Java SE和Java EE平台的标准部分,它提供了一种将XML文档与Java...
JAXB 2.3.0引入了一些新的特性和改进,包括: 1. **Java SE 9+支持**:JAXB 2.3.0开始支持Java 9及其后续版本,这包括模块化系统(Jigsaw)的集成。 2. **API增强**:可能包含了新的API接口或方法,以提供更丰富的...
这些文件是Java编程环境中常用的库文件,主要用于XML绑定(Java Architecture for XML Binding,JAXB)和JavaBeans Activation Framework(JAF)。在Java应用程序开发中,尤其是处理XML数据时,这些库扮演着至关重要...
在给定的压缩包文件中,包含了一些核心的JAXB组件以及相关的依赖库,如`jaxb-impl.jar`、`jaxb-api.jar`和`jsr173_1.0_api.jar`,这些都是解决在Maven项目中这些特定jar包缺失问题的关键。 首先,`jaxb-impl.jar`是...
JAXB 2.1.9 版本修复了一些已知问题,提高了性能,并提供了新的特性。 使用JAXB,开发者首先需要定义Java类来表示XML结构,然后通过JAXB的`@XmlRootElement`和`@XmlElement`等注解来标注这些类,以便JAXB能够理解...
**JAXB 2.2.7** 版本是JAXB的一个特定发行版,可能包含了对之前版本的一些错误修复、性能优化和新功能。由于没有提供具体的描述,我们可以推测这个版本可能专注于增强稳定性,提高兼容性,以及对Java 6和7的支持。...
JAXB (Java Architecture for XML Binding) 是 Java 中用于对象到XML以及XML到对象转换的API。它使得开发者能够轻松地将Java对象模型映射到XML文档,并反之亦然。在给定的例子中,我们将深入理解如何使用JAXB注解来...
可能需要一些额外的适配工作,例如使用第三方库如RetroLambda来支持Java 8的特性,或者使用其他XML处理库如Gson或Jackson作为替代方案。 总的来说,虽然Android原生不支持JAXB,但通过引入相应的jar包,开发者仍然...
当我们需要处理XML文件,比如从XML中提取数据时,JAXB(Java Architecture for XML Binding)是一个强大的工具。本教程将详细解释如何在Idea中利用JAXB来读取XML文件中的数据。 JAXB是Java标准API,它提供了将Java...
在Java开发中,JAXB(Java Architecture for XML Binding)是一个用于将XML文档和Java对象之间进行绑定的技术。在处理XML文件时,特别是涉及到序列化和反序列化时,可能会遇到字符编码问题,即所谓的“乱码”。这个...
在使用webservice,mule esb等需要jaxb的项目里经常会出现 JAXB 2.0 API is being loaded from the bootstrap classloader这个错误,按照打出的信息Use the endorsed directory mechanism to place jaxb-api.jar in ...
例如,`2.1`版本相对于`2.0.3`可能包含了更多的功能改进和兼容性提升,同时可能修复了一些已知的问题。 **使用场景** JAXB在很多领域都有广泛的应用,如: 1. **Web服务**:在SOAP Web服务中,JAXB常用于将Java...
标题提到的"jaxb-api.jar.jaxws-api.zip_ jaxb-api.jar_cxf_jax-ws.jar_jaxb-api",是针对这个问题提供的一组支持包。 **JAXB(Java Architecture for XML Binding)** 是Java平台的一个标准,它允许开发者将XML文...
**JAXB(Java Architecture for XML Binding)** 是Java平台中用于处理XML的一种强大的工具,它提供了将XML文档与Java对象之间的映射,从而方便XML数据的解析和生成。通过JAXB,开发者可以轻松地实现XML数据到Java...