如何从xml中删除元素名称?

时间:2016-04-12 05:23:31

标签: jaxb apache-camel swagger

我正在尝试创建一个人休息服务。我正在尝试使用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组件来创建其余服务。

期待您的解决方案。提前谢谢。

1 个答案:

答案 0 :(得分:0)

我会使用XSLT,直接,简单,就像魔术一样。