我正在尝试创建一个人休息服务。我正在尝试使用JAXB和JSon Schema Using Jackson创建xml架构。
所以这是我的Model类来创建相应的XML以及JSon Payload。
package www.tempuri.person.model;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import javax.xml.bind.annotation.XmlRootElement;
import com.fasterxml.jackson.annotation.JsonRootName;
@ApiModel(value="GetPerson Message",description = "Personal Input Request")
@XmlRootElement(name="getPerson")
@JsonRootName(value = "getPerson")
public class GetPersonWrapper {
@ApiModelProperty(value = "GetPerson", required = true)
private GetPerson getPerson;
public GetPerson getGetPerson() {
return getPerson;
}
public void setGetPerson(GetPerson getPerson) {
this.getPerson = getPerson;
}
}
package www.tempuri.person.model;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
@ApiModel(description = "Represents Persons")
public class GetPerson {
@ApiModelProperty(value = "Application Area of GetPerson", required = true)
private ApplicationArea applicationArea;
@ApiModelProperty(value = "Data Area of GetPerson", required = true)
private DataAreaGet dataArea;
/**
* @return the dataArea
*/
public DataAreaGet getDataArea() {
return dataArea;
}
/**
* @param dataArea the dataArea to set
*/
public void setDataArea(DataAreaGet dataArea) {
this.dataArea = dataArea;
}
public ApplicationArea getApplicationArea() {
return applicationArea;
}
public void setApplicationArea(ApplicationArea applicationArea) {
this.applicationArea = applicationArea;
}
}
使用上面的模型类,json模式按预期进行。但是在xml的情况下,我无法得到我想要的东西: 下面是它在xml中生成的模式:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<getPerson>
<getPerson>
<applicationArea/>
<dataArea>
<description>string</description>
<id>0</id>
<name>string</name>
</dataArea>
</getPerson>
</getPerson>
正如您所看到的,我正在获得两个getPerson节点。如何仅使用jaxb注释删除其中一个getPerson节点。
我正在使用apache camel swagger组件来创建其余服务。
期待您的解决方案。提前谢谢。
答案 0 :(得分:0)
我会使用XSLT,直接,简单,就像魔术一样。