我得到了以下 XML,其中元素名称与其包名称一起出现。如何使用 JaxB 编组/解组给定的 XML?
<com.jaraws.api.Vehicle>
<number>KT12356</number>
<engine>DIESEL<engine>
</com.jaraws.api.Vehicle>
Java 类写成:
package com.jaraws.api;
@XmlRootElement
public class Vehicle{
private String number;
private String engine;
// Getters Setter for number and engine attributes
@XmlElement
public String getNumber(){
return number;
}
public void setNumber(){
this.number=number;
}
@XmlElement
public String getEngine(){
return engine;
}
public void setEngine(){
this.engine=engine;
}
}
它是否可以实现,或者我没有在正确的事情上做某事。我只想以给定的格式编组/解组 xml。
按照 Thomas 在评论中的建议,只需将
name
属性添加到 @XmlRootElement
注释到您期望的名称即可:
@XmlRootElement(name = "com.jaraws.api.Vehicle")
public class Vehicle {
// class definition ...
}
您不能执行以下操作:
@XmlRootElement(name = Vehicle.class.getName())
如果您尝试这样做,您将收到以下错误:
The value for annotation attribute XmlRootElement.name must be a constant expression
默认情况下,根据javadoc,如果未设置名称,则它是从类名派生的:
public @interface XmlRootElement {
// some stuff
/**
* local name of the XML element.
* <p>
* If the value is "##default", then the name is derived from the
* class name.
*
*/
String name() default "##default";
}
不指定名称元素将导致以下名称
vehicle
(有关更多信息,请参阅org.glassfish.jaxb.runtime.v2.model.impl.TypeInfoImpl#parseElementName
方法)