JAXB-更改结构子节点



我在jaxb:中生成了结构

<Crm> <codigo>000</codigo> <uf>GO</uf> <crm>7784CRM</crm> <Especialidade> <codigo>13</codigo> <nome>CIRURGIA</nome> </Especialidade> <Especialidade> <codigo>14</codigo> <nome>CIRURGIA GERAL</nome> </Especialidade> </Crm>

我需要这个结构

<Crm> <codigo>0000</codigo> <uf>GO</uf> <crm>0000CRM</crm> <Especialidade> <codigo>13</codigo> <nome>CIRURGIA PLASTICA</nome> <codigo>14</codigo> <nome>CIRURGIA GERAL</nome> </Especialidade> </Crm>

CrmDTO类别:

@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class CrmDTO extends ParentDTO {
@XmlElement(name="codigo")
private Long CODIGO;
@XmlElement(name="uf")
private String UF;
@XmlElement(name="crm")
private String CRM;
@XmlElement(name = "Especialidade")
private List<EspecialidadeDTO> especialidades;

特殊DTO类:

@XmlType(propOrder= {"CODIGO", "NOME"})
@XmlAccessorType(XmlAccessType.FIELD)
public class EspecialidadeDTO extends ParentDTO {
@XmlElement(name="codigo")
private Long CODIGO;
@XmlElement(name="nome")
private String NOME;

我试了好几种方法,但都没能按我想要的方法去做。放一些注释我找到了一些教程,但失败了

您需要将namecodigo元素表示为一个用@XmlElements注释的List属性,以获得您想要的行为:

@XmlRootElement(name="Crm")
@XmlAccessorType(XmlAccessType.FIELD)
public class CrmDTO extends ParentDTO {
    @XmlElement(name = "codigo")
    private Long CODIGO;
    @XmlElement(name = "uf")
    private String UF;
    @XmlElement(name = "crm")
    private String CRM;
    @XmlElementWrapper(name="Especialidade")
    @XmlElements({
      @XmlElement(name="codigo", type=Long.class),
      @XmlElement(name="name", type=String.class)
    })
    private List<Object> especialidades;
}

相关内容

最新更新